Problemi con code blocks e dev c++

qadesh1
ciao a tutti allora da poco ho installato sul mio pc Codeblocks .L'installazione pare sia andata bene...avvio il programma scrivo un semplice programmino c per prova ma quando poi vado su Build and run non succede nulla...il programm non viene compilato....provo a compilare "manualmente"andando su "compile current file" avviene la compilazione ma poi una volta che vado su run non succede nulla.....dov'è il problema?


dev c++ invece fa tutto ok pero poi mi lascia il risultato per una frazione di secondo prima di chiudersi e io non riesco a leggere nulla..

Risposte
_overflow_1
ciao!!!

potresti dire se codeblocks ti da qualche errore?

per quanto riguarda il dev invece io ti sconsiglio di usarlo in quanto è un progetto ormai abbandonato da diverso tempo... mentre per il problema della shell che si chiude subito, potresti far partire il programma direttamente da riga di comando, oppure usare stratagemmi del tipo system("pause"); alla fine del programma oppure getchar();...

qadesh1
no apparentemente nessun errore non riesco a capire...fino a qualke gg fa era tutto ok funzionava bene...poi ho formattato e reinstallato codeblockma ora compilo"MANUALMENTE" poi vado su "run" e mi dice:"it seems that this file has not been built yet.Do you want to build it now?....poi clicco sul si ma non succede nulla non appare nessuna shell

qadesh1
per quanto riguarda dev c++ mi hai ricordato che il prof ci diceva di usare getchar();.....ma dove lo devo mettere?

_overflow_1
allora ti faccio un esempio

int main()
{
   printf("ciao mondo");
   
   getchar();
   return 0;
}


per quanto riguarda codeblocks potresti provare a reinstallare... non so....

qadesh1
ok era come ricordavo ma se provo questo la shell sparisce subito comunque:(


#include

int main()
{
int x;
int y;
int z;


printf("dammi un numero\n");
scanf("%d",&x);
printf("dammi un altro numero\n");
scanf("%d",&y);
z=x+y;
printf("la somma e': %d",&z);

getchar();
return 0;
}

_overflow_1
ci sarebbe da fare tutto un bel discorsetto comunque sintetizzando, il tutto si verifica perché stdin è bufferizzato quindi quando leggi da input utilizzando scanf e simili spesso resta nel buffer qualche carattere di newline o simili che diciamo vengono intercettati dalla getchar();

comunque una possibile soluzione potrebbe essere usare system("pause") al posto di getchar();


#include <stdio.h>
#include <stdlib.h>

int main()
{
   int x;
   int y;
   int z;


   printf("dammi un numero\n");
   scanf("%d",&x);

   printf("dammi un altro numero\n");
   scanf("%d",&y);

   z=x+y;
   printf("la somma e': %d\n\n", z);

   system("pause");
   return 0;
}



oppure inventarti un ciclo del genere:

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int x;
   int y;
   int z;
   int ris;

   do{
      printf("dammi un numero\n");
      scanf("%d",&x);

      printf("dammi un altro numero\n");
      scanf("%d",&y);

      z=x+y;
      printf("la somma e': %d\n\n", z);
      printf("\n\nSi vuole rieseguire il programma? se si premere 1 altrimenti 0: ");
      scanf("%d", &ris);
   }while(ris!=0);

   return 0;
}

qadesh1
ah grazie!!!per approfondire e comprendere bene quello che mi hai detto mi basta un semplice manuale C?

apatriarca
Sparisce subito perché è già presente un carattere nello stream di input quando chiami "getchar();". scanf non elimina infatti gli spazi o i caratteri di "a capo" dopo il numero dallo stream e quindi li lascia nel buffer per essere letti in seguito (nel tuo caso da getchar())-

_overflow_1
potresti anche frugare un po' su internet, ciò non toglie che un buon manuale per imparare tutto per bene è essenziale... potresti provare con il deitel & deitel "c corso completo di programmazione"

qadesh1
ok grazie a tutti!

_overflow_1
;)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.