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/nn"); scanf("%c", &a); while (a == 'n') scanf("%c", &a); if (a == 'y' || a == 'Y') return 1; else return 0; }
- Programmazione