2012 – 7

Si consideri la seguente procedura:

#define N 10

int vett[N];

void p() 
{
   int i;
   for(i=0; i < N; i++)
      vett[i]=i;
   for(i=0; i < N; i++)
      vett[i]=vett[vett[i]%(N-i)];
}

Indicare il contenuto di tutti gli elementi del vettore vett[] al termine della procedura.


Soluzione: 0 1 2 3 4 0 2 1 0 0


Dopo il primo for

0 1 2 3 4 5 6 7 8 9

Il secondo for assegna i valori i%(n-i)

  • 0%10 = 0, 0 1 2 3 4 5 6 7 8 9
  • 1%9 = 1, 0 1 2 3 4 5 6 7 8 9
  • 2%8 = 2, 0 1 2 3 4 5 6 7 8 9
  • 3%7 = 3, 0 1 2 3 4 5 6 7 8 9
  • 4%6 = 4, 0 1 2 3 4 5 6 7 8 9
  • 5%5 = 0, 0 1 2 3 4 0 6 7 8 9
  • 6%4 = 2, 0 1 2 3 4 0 2 7 8 9
  • 7%3 = 1, 0 1 2 3 4 0 2 1 8 9
  • 8%2 = 0, 0 1 2 3 4 0 2 1 0 9
  • 9%1 = 0, 0 1 2 3 4 0 2 1 0 0