hell_flip Inviato 11 Maggio 2010 Segnala Condividi Inviato 11 Maggio 2010 Salve a tutti, ieri mi sono imbattuto in questo problema strano, per me. Ho scritto un main.c con xcode, l'ho compilato e quando lo vado ad eseguire la parte precedente al ciclo funziona, quando ricomincia il programma con il ciclo mi viene stampata 2 volte la printf con la mia domanda. Il problema è che lo stesso programma in windows funziona alla perfezione. Dove sta l'inceppo? nel main o in xcode? posto il main Ringrazio in anticipo dell'interesse.Saluti :lol: #include <stdio.h> #include <stdlib.h> int add (int a , int ; int prod (int a , int ; int main () { char x; int a,b,somma,prodotto; do { printf("Che operazione vuoi eseguire?\n\n "); printf("S=Somma, P=Prodotto, Q=Uscita "); scanf("%c",&x); switch (x) { case 'S' : printf("Inserisci il valore del primo addendo\n\n"); scanf("%d",&a); fflush(stdin); printf("\n\nInserisci il valore del secondo addendo\n\n"); scanf("%d",&; somma= add(a,; printf("\n\nLa somma e' %d\n\n", somma); break; case 'P' : printf("Inserisci il valore del primo fattore\n\n"); scanf("%d",&a); fflush(stdin); printf("Inserisci il valore del secondo fattore\n\n"); scanf("%d",&; prodotto=prod(a,; printf("\n\nIl prodotto e' %d\n\n", prodotto); break; case 'Q' : exit(0); } }while (x!='S'|x!='P'); return 0; } int add (int a, int :lol: { int somma; somma= a+b; return somma; } int prod (int a , int :lol: { int prodotto; prodotto= a*b; return prodotto; } Link al commento Condividi su altri siti Altre opzioni di condivisione...
numerone Inviato 11 Maggio 2010 Segnala Condividi Inviato 11 Maggio 2010 Sostanzialmente tu leggi un solo carattere con lo scanf quando in realtà ne immetti 2 (il carattere e l'invio). A questo punto l'invio rimane nello stdin che sarà il prossimo carattere letto e quindi zompa tutti i controlli dato che non c'è nessun controllo che viene attivato dall'invio. Devi scaricare il carattere \n dallo stdin dopo aver letto il carattere. Dio@paradiso:~$ gcc -o Terra World.cpp Link al commento Condividi su altri siti Altre opzioni di condivisione...
hell_flip Inviato 11 Maggio 2010 Autore Segnala Condividi Inviato 11 Maggio 2010 quindi ci vuol una fflush(stdin) dopo lo scanf? Link al commento Condividi su altri siti Altre opzioni di condivisione...
hell_flip Inviato 11 Maggio 2010 Autore Segnala Condividi Inviato 11 Maggio 2010 qualcuno può essere più esaustivo per favore? grazie in anticipo Link al commento Condividi su altri siti Altre opzioni di condivisione...
fra.makaveli Inviato 11 Giugno 2010 Segnala Condividi Inviato 11 Giugno 2010 Prova fpurge al posto di fflush Link al commento Condividi su altri siti Altre opzioni di condivisione...
hell_flip Inviato 14 Giugno 2010 Autore Segnala Condividi Inviato 14 Giugno 2010 grazie, provo e ti faccio sapere:D Link al commento Condividi su altri siti Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.