PDA

View Full Version : C domanda su funzione rand()


Manson666
24-11-2003, 19:15
Ho un dubbio riguardo l'utilizzo della funzione rand() in un esercizio presente sul mio manuale di C.

Il codice è questo:

#include <stdio.h>
#include <stdlib.h>

int main(){

int i;
unsigned seed;

printf("Inserire il seme: ");
scanf("%u", &seed);
srand(seed);

for(i=1;i<=10;i++){
printf("%10d",1+rand()%6);

if(i%5) == 0;
printf("\n");
}

return 0;
}

La cosa che non capisco è a cosa servano queste due righe di codice:

if(i%5) == 0;
printf("\n");

Grazie

angelica
24-11-2003, 19:22
if(i%5) == 0;

mi sembra sbagliato... ;)

cionci
24-11-2003, 19:23
Probabilmente volevano scrivere questa cosa:

if((i%5) == 0)
printf("\n");

angelica
24-11-2003, 19:31
if((i%5) == 0)
printf("\n");

penso che queste righe servano (non ho compilato il prog) a fare andare a capo dopo cinque risultati su una riga...

Sephiroth83
24-11-2003, 20:51
Angelica ha ragione, infatti l'operatore % (ad es. a%b) restituisce il modulo di un numero (nell'esempio a) diviso un altro (b). Il modulo non è altro che il resto della divisione, ad es 14%5 == 4.

Nal tuo programma la variabile i è multiplo di 5 ogni 5 cicli (ma dai?!?) è il risultato del modulo è zero ==> ogni 5 cicli stampa un "a capo". Tutto chiaro?

ivanao
27-11-2003, 00:21
giusto è il resto di divisione intera, quindi se i=5 viene 5/5=1 quindi resto 0 e stampa un \n , poi se i=10 viene 10/5=2 con resto 0 e stampa \n

bizzu
27-11-2003, 11:32
... e la stessa operazione è svolta nell'usare il rand(), che restituisce un int (mi sembra); quindi per avere un numero (pseudo)casuale da 0 a 5 si scrive rand()%6 (resto da 0 a 5 :) )
Byez