2008 – 10

Si consideri la seguente funzione:

#define N 5
void calcola()
{
    int i, vett[N];
    for(i = 0; i < N; i++)
        vett[i]=i;
    for(i = 0; i < N; i++)
        vett[i]=vett[(vett[i]*i)%N];
}

Indicare il contenuto del vettore vett al termine dell'esecuzione della funzione calcola.

Risposte:

  1. [0, 1, 4, 4, 1]
  2. [0, 1, 4, 3, 1]
  3. [0, 1, 4, 3, 4]
  4. nessuna delle precedenti.

Soluzione: a (0, 1, 4, 4, 1).


Osserva

  • i=0: vett[0] = vett[(vett[0]*0)%5] = vett[(0*0)%5] = vett[0%5] = vett[0] = 0
  • i=1: vett[1] = vett[(vett[1]*1)%5] = vett[(1*1)%5] = vett[1%5] = vett[1] = 1
  • i=2: vett[2] = vett[(vett[2]*2)%5] = vett[(2*2)%5] = vett[4%5] = vett[4] = 4
  • i=3: vett[3] = vett[(vett[3]*3)%5] = vett[(3*3)%5] = vett[9%5] = vett[4] = 4
  • i=4: vett[4] = vett[(vett[4]*4)%5] = vett[(4*4)%5] = vett[16%5] = vett[1] = 1