2011 – 4

Si consideri il seguente frammento programma:

int main(void)
{
   int T[25], S[10], W[5], i;
   i=0;
   while(i <= 24) 
       S[T[i++]-1]++;
   i=0;
   while(i <= 9) 
       W[S[i++]-1]++;
}

Si supponga che i vettori T, S e W inizialmente contengano i seguenti valori:

  • T = [1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 6, 6, 7, 7, 8, 8, 8, 8, 8, 9, 10, 10, 10];
  • S = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
  • W = [0, 0, 0, 0, 0];

Scrivere il contenuto del vettore W dopo l’esecuzione del programma.


Soluzione: W = {2, 3, 4, 0, 1}


Il primo for() scorre il vettore T e scrive in S il numero di 1, 2, 3, ..., 10

S = {2, 3, 3, 3, 1, 2, 2, 5, 1, 3}

Il secondo for() scorre il vettore S e scrive in W il numero di 1, 2, 3, 4 e 5

W = {2, 3, 4, 0, 1}