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: 6. riempa un array di 100 elementi con i numeri tra 1 e 100 in ordine
03: e successivamente lo "mescoli", ovvero scambi di posizione in maniera
04: casuale i vari elementi dell'array, e poi lo stampi. Suggerimento: si
05: scorra l'array elemento per elemento e per ciascun elemento generare
06: casualmente (rand()) l'indice di un altro elemento con cui scambiarlo.
07: */
08: 
09: #include<stdio.h>
10: #include<stdlib.h>
11: #include<time.h>
12: 
13: #define ASIZE (100)
14: 
15: int main(int argc, char **argv){
16: 
17:   srand(time(0));
18: 
19:   int a[ASIZE];
20: 
21:   for(int i = 0; i < ASIZE; ++i)
22:   {
23:     a[i] = i + 1;  // riempo l'array con numeri da 1 a 100 in ordine
24:   }
25:   
26:   // ciclo nuovamente su array e genero indice a caso con cui scambiare
27:   // l'elemento in esame
28:   for(int i = 0; i < ASIZE; ++i)
29:   {
30:     // genero indice di altro elemento con cui scambiare l'elemento di indice i
31:     int j = rand()%ASIZE;
32: 
33:     // per lo scambio mi devo appoggiare a un'altra variabile temporanea
34:     int tmp = a[j];
35:     a[j]    = a[i];
36:     a[i]    = tmp;
37:   }
38: 
39:   for(int i = 0; i < ASIZE; ++i)
40:   {
41:     printf("L'elemento di indice #%d vale %d\n", i, a[i]);
42:   }
43:   return 0;
44: }
45: 
46: