Programmazione

  • Materia: Programmazione
  • Visto: 4062
  • Data: 07/05/2008
  • Di: Redazione StudentVille.it

Linguaggio C: programma che insegna la moltiplicazione

esercizio svolto o teoria

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;
}