Si consideri la seguente funzione:
#define N 5 int vett1[N]; int vett2[N]; void calcola() { int temp, i; for(i=0; i < N; i++) vett1[i]=N-i-1; for(i=0; i < N; i++) { temp=vett1[i]; vett2[temp]=i; } }Indicare il contenuto del vettore vett2 al termine dell’esecuzione della funzione calcola().
Risposte:
- [0,1,2,3,4]
- [3,1,4,2,0]
- [4,3,2,1,0]
- nessuna delle precedenti.
Soluzione: c ([4,3,2,1,0]).
Il primo ciclo for() carica in vett1 i valori
- vett1[0] = 5-0-1 = 4
- vett1[1] = 5-0-2 = 3
- ...
- vett1[4] = 5-4-1 = 0
Il secondo ciclo for() carica in vett2 i valori da 0 a 4 usando come indici i valori in vett1
- vett2[4] = 0
- vett2[3] = 1
- ...
- vett2[0] = 4
quindi vett2[] = [4, 3, 2, 1, 0].