Ritorna alla pagina del corso.

Questa pagina contiene gli esercizi proposti in laboratorio e -alcune- delle soluzioni proposte.
Si suggerisce di provare a risolvere gli esercizi e solo in un secondo tempo di confrontare quanto fatto con le soluzioni proposte.

01: /*
02: 5. usi rand() per riempire un array di 100 elementi con numeri interi
03: univoci tra 1 e 300 e lo stampi
04: */
05: 
06: #include<stdio.h>
07: #include<stdlib.h>
08: #include<time.h>
09: 
10: #define ASIZE (100)
11: 
12: int main(int argc, char **argv){
13: 
14:   srand(time(0));
15: 
16:   int a[ASIZE];
17: 
18:   for(int i = 0; i < ASIZE; ++i)
19:   {
20:     int n, trovato;
21:     do
22:     {
23:       n = 1 + rand() % 300;
24:       trovato = 0;  // trovato lo inizializzo a falso, rimarra' falso se effettivamente non trovo il 
25:         // valore di n nell'array
26:       for(int j = 0; j < i; ++j)
27:       {
28:         if(a[j] == n)
29:   {
30:     trovato = 1; // segno che il valore di n era gia' presente
31:     break;       // interrompo il for(j) che tanto e' inutile continuare
32:   }
33:       }
34:     }
35:     while(trovato); // equivalente a while(trovato == 1); 
36: 
37:     a[i] = n;       // arrivo qui se e solo se il valore di n non era presente nell'array
38:   }
39: 
40:   for(int i = 0; i < ASIZE; ++i)
41:   {
42:     printf("L'elemento di indice #%d vale %d\n", i, a[i]);
43:   }
44:   return 0;
45: }
46: 
47: