A cura di: Administrator
/*
* I computer giocano un ruolo sempre più importante nell'educazione.
* Scrivete un programma che aiuti uno studente di scuola elementare
* ad apprendere la moltiplicazione.
* Utilizzate rand per produrre due interi positivi di una cifra.
* Dovrete quindi visualizzare una domanda come:
*
* How much is 6 times 7?
*
* In seguito lo studente digiterà la risposta. Il vostro programma
* controllerà la risposta dello studente. Qualora sia corretta,
* visualizzerete "Very good!" e sottoponete quindi un'altra domanda
* sulla moltiplicazione. Nel caso che la risposta sia sbagliata,
* visualizzate "No, Please try again." e lasciate quindi che lo
* studente provi ancora ripetutamente la stessa domanda, finché
* alla fine non avrà risposto correttamente.
*
*/
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void printResult(const unsigned int);
unsigned int askAgain(void);
unsigned int askTimes(void);
int
main(void)
{
unsigned int play, times ,answer, result;
play = 1; /* giochiamo... */
do {
times = askTimes();
/* leggi risposta */
scanf("%u", &answer);
result = (times == answer)? 1 : 0;
printResult(result);
play = askAgain();
} while (play == 1);
return (0);
}
/*
* Genera due numeri naturali tra 0 e 9 a caso e restituisce il prodotto
*
*/
unsigned int
askTimes(void)
{
unsigned int n1, n2;
srandom(time(NULL));
n1 = random() % 10;
n2 = random() % 10;
printf("How much is %u * %u?\n", n1, n2);
return n1*n2;
}
/*
* Stampa un messaggio di risposta corretta/sbagliata
* in base al valore 0/1 dell'argomento
*
*/
void
printResult(const unsigned int r)
{
if (0 == r)
printf("\nNo, Please try again.\n");
else
printf("\nVery good!\n");
}
/*
* Chiede all'utente se vuole continuare o meno.
* Restituisce 1 in caso affermativo, 0 altrimenti
*
*/
unsigned int
askAgain(void)
{
char a;
printf("\nContinue? y/n\n");
scanf("%c", &a);
while (a == '\n')
scanf("%c", &a);
if (a == 'y' || a == 'Y')
return 1;
else
return 0;
}