Classi Terze: MODULO e RANDOM
(Novembre 2010)
L'operatore Modulo
Pubblicato prima del 07/05/2008 - Informazione assente
L'operatore %, chiamato operatore MODULO restituisce semplicemente il resto di una divisione.
Cioè:
5 % 2 = 1;
Perché 5 diviso 2 è 2 con il resto di 1.
E' molto facile, ad esempio, prendendo il seguente pezzo di codice:
int modulo, a = 11, b = 4;
modulo = a % b;
cout << modulo;
Stamperà:
3
Perché 11 diviso quattro fa 2 con il resto di 3.
http://www.pierotofy.it/pages/guide_tutorials/CPlusPlus/L_-_operatore_Modulo/
ESERCIZIO: Dato in input un numero, dire se è pari o dispari
GENERAZIONE DI NUMERI CASUALI
Per assegnare a una variabile x un numero casuale da 1 a 100 con rand bisogna scrivere:
int x;
x = rand() % 100 + 1;
in questo modo viene generato un numero casuale compreso tra 0 e RAND_MAX (una costante, che secondo l’ANSI C – un protocollo per gli
standard di C – deve essere maggiore o uguale di 32767);
il simbolo % rappresenta l’operatore modulo, che fornisce il resto della divisione tra il valore di ritorno di rand e il fattore di scala (in questo caso,
100).
Dunque, il risultato sarà compreso tra 0 e 99, e aumentato di un’unità per ottenere un numero casuale compreso tra 1 e 100.
Ma non è finita: prima di richiamare la funzione rand, è opportuno richiamare la funzione di randomizzazione srand, che accetta come argomento
un seme (del tipo unsigned int), che “insemina” la funzione rand, in modo da indurla a generare una diversa sequenza di numeri casuali ad ogni
esecuzione del programma, a patto che sia fornito ogni volta un seme diverso.
Si può fornire come argomento a srand l’orario in quell’istante, letto dall’orologio interno del computer da parte della funzione time
srand(time(NULL));
int x;
x = rand() % 100 + 1;
NB. Se devo generare una sequenza di numeri casuali, ad es. all’interno di un ciclo, la funzione di randomizzazione srand va richiamata UNA SOLA
VOLTA, prima del ciclo. (In pratica è come “rimescolare l’urna” prima dell’estrazione).
http://www.pierotofy.it/pages/guide_tutorials/C/Generazione_di_numeri_casuali/
ESERCIZI:
1)
2)
3)
4)
5)
Generare 100 numeri casuali compresi tra 1 e 1000 e dire quanti sono i numeri pari che sono usciti.
Simulare il lancio dei dadi (e … scommettere sul risultato)
Generare un numero random compreso tra 1 e 100 e “farlo indovinare” all’utente, che deve continuare ad inserire numeri finchè non lo
ha indovinato. Visualizzare anche il numero di tentativi effettuati.
NB. Si può guidare l’utente visualizzando ad ogni tentativo la scritta “No: il numero da indovinare è più alto/più basso del numero che
hai inserito”
Prova delle tabelline: generare una sequenza di tabelline casuali (es “quanto fa 6 x 9” e chiederlo all’utente). Dare poi il numero di
risposte esatte sul numero delle domande totali (o la percentuale).
“Gioco dell’oca” … (inventalo tu)
Gioco dell’oca: la versione tradizionale:
Si gioca su tabellone sul quali è disegnato un percorso a spirale, generalmente
sinistrorsa, composto da 63 caselle (talvolta questo numero sale fino a 90),
contrassegnate con numeri o altri simboli. I giocatori iniziano con un segnalino
nella casella di partenza e, a turno, procedono lungo il percorso di un numero
di caselle ottenuto attraverso il lancio di una coppia di dadi. Lo scopo del gioco
è raggiungere la casella centrale della spirale.