2005 – 3

Si consideri la seguente funzione

void calcola(int* vett, int n) 
{
   int x,y;
   int i, j;
   for(i=0; i < n; i++) 
   {
      y=vett[0];
      for(j=0; j < n-1; j++) 
      {
         x=vett[j+1];
         vett[j+1]=y;
         y=x;
      }
      vett[0]=y;
   }
}

Assumendo che vett contenga il vettore [10,9,8,7,6,5,4,3,2,1], quali sono gli elementi di vett dopo l'esecuzione di calcola (usando 10 come secondo parametro)?

Risposte:

  1. [1,2,3,4,5,6,7,8,9,10]
  2. [10,9,8,7,6,5,4,3,2,1]
  3. [1,3,5,7,9,2,4,6,8,10]
  4. nessuna delle precedenti

Soluzione: b ([10,9,8,7,6,5,4,3,2,1])


Ad ogni passo gli elementi del vettore si spostano in avanti in modo ciclico (l'ultimo elemento diventa il primo).

Dopo 10 passi il vettore ritorna allo stato iniziale...