2006 – 2

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:

  1. [0,1,2,3,4]
  2. [3,1,4,2,0]
  3. [4,3,2,1,0]
  4. 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].