Esercizio con scanf

Bush1
Ciao a tutti!
devo creare un programma che presenti tre domande su un argomento a piacere a cui l'utente possa rispondere si o no (s/n). Il punteggio iniziale è zero e ogni risposta esatta vale 1 punto. Al termine si visualizzano i punti ottenuti dall'utente.

Ho fatto cosi:

#include

int main ()
{
char x,y,z;
int risultato =0;


printf("E' vero che napoleone mori' nel 1821?\n");
scanf("%c", &x);
printf("20*12 e' uguale a 242?\n");
scanf("%c", &y);
printf("E' vero che Odisseo scrisse Omero?\n");
scanf("%c", &z);

if(x == 's')
risultato++;
else
risultato =0;
if(y == 'n')
risultato++;
else
risultato=0;
if(z == 'n')
risultato++;
else
risultato=0;

printf("Complimenti! Il tuo punteggio e' %d/3\n", risultato);
}

ma il secondo scanf non me lo considera, come mai?

Risposte
el_brando
Perché la scanf inserisce in $ y $ il primo carattere memorizzato nel buffer di stdin, che dopo la prima scanf risulta essere '\n' (invio)... Dovresti trovare il modo di "consumare" tale carattere prima di fare la lettura di $ y $... Inoltre i tuoi controlli sul calcolo del punteggio mi sembrano un pò strani... Se l'utente risponde correttamente alle prime due domande e poi sbaglia la terza, ottiene un risultato pari a 0 !!

Bush1
Si ora con il punteggio ci sono, ho risolto.. ma non capisco lo scanf... come posso far inserire 3 risposte all'utente?

Bush1
ok ho risolto inserendo un scanf per " a capo" :D

minomic
Ciao,
puoi mettere uno spazio prima di %c per consumare i "leading white spaces", quindi

scanf(" %c", ...);

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