|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Monza
Messaggi: 769
|
[ c ] Problemino facile facile
Ciao a tutti premetto che ho da poco cominciato a prog. in c, quindi non mi insultate per questo mio prob.
ho creato questo semplice prog: ----------------------------------------------------------------------------------- #include <stdio.h> int num1, num2; char op; main () { printf ("inserisci il primo numero \n"); scanf("%d", &num1); printf ("inserisci l' operatore \n"); op = getchar(); printf ("inserisci il secondo numero \n"); scanf("%d", &num2); if ( op == '+' ) printf(" La somma dei 2 numeri e'", num1 + num2 ); if ( op == '-' ) printf(" La differenza dei 2 numeri e'", num1 - num2 ); if ( op == '*' ) printf(" il prodotto dei 2 numeri e'", num1 * num2 ); if ( op == '/' ) printf(" La somma dei 2 numeri e'", num1 / num2 ); } _____________________________________________________ Quando compila non mi da errori, quando lo eseguo stampa inserisco il primo numero stampa non mi fa inserire l' operatore e stampa subito il messaggio dopo inserisco il secondo numero ed esce. Mi spiegate dove sta l' errore? grazie |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sostituisci getchar con scanf("%c", &op);
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Monza
Messaggi: 769
|
non funziona ho gia provato
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2003
Città: Rimini
Messaggi: 2279
|
Cosa succede quando usi lo scanf? Ti da lo stesso problema di prima o qualcos'altro?
__________________
Gigabyte 965P-DS3 ¤ E6600@400*8 ¤ Scythe Ninja Plus Rev.B ¤ Ram 4GB ¤ HD SSD Crucial M4 128GB
Gainward 4850 Golden Sample ¤ Antec NEO 550HE ¤ CM Centurion 534 ¤ Dell Ultrasharp U2312HM Notebook Asus N551JW ¤ i7-4750HQ ¤ nVidia 960M 4GB ¤ 16GB DDR3 ¤ SSD Intel 850EVO 500GB |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Prova così:
Codice:
#include <stdio.h>
int num1, num2;
char op;
main ()
{ printf ("inserisci il primo numero \n");
scanf("%d", &num1);
printf ("inserisci l' operatore \n");
fflush(stdin);
scanf("%c", &op);
printf ("inserisci il secondo numero \n");
scanf("%d", &num2);
if ( op == '+' ) printf(" La somma dei 2 numeri e'", num1 + num2 );
if ( op == '-' ) printf(" La differenza dei 2 numeri e'", num1 - num2 );
if ( op == '*' ) printf(" il prodotto dei 2 numeri e'", num1 * num2 );
if ( op == '/' ) printf(" La somma dei 2 numeri e'", num1 / num2 );
}
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Monza
Messaggi: 769
|
Funziona!
mi puoi dire qual' era il prob? |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: May 2003
Città: Mantova
Messaggi: 303
|
Mi permetto di inserirmi e rispondere io...
Dopo le operazioni di lettura spesso restano dei caratteri, come l'invio, nel buffer di lettura, e se questo non viene pulito, come con la fflush proposta o con altre funzioni, vengono lette dall'istruzione di lettura successiva... Probabilmente la tua scanf("%c") o getchar() leggeva l'invio premuto per inserire il primo numero... Io a scuola x evitare problemi la pulizia del buffer la faccio sempre, dopo ogni lettura, anche se non ce ne sono di immediatamente successive... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Sì...Il fatto è che per getchar e scanf con %c lo \n che rimane nel buffer di input è un carattere valido...mentre per la scanf fatta con altri formati lo \n non è un carattere valido...
fflush pulisce lo standard input... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:15.



















