2003 – 2

Si consideri il seguente frammento di programma:

void bang(int *a, int l)
{
   int i=0, t=0, loop=1;

   while(loop)
   {
      if(a[i] > 0)
      {
          a[t]=a[i];
          t++;
      }
      if(i < l-1)
      {
          i++;
      }
      else
      {
          loop=0;
      }
   }
}

Si supponga che si richiami bang() passando come primo paramento il seguente vettore: {33, 3, -22, -18, -30, 27, 1, -42, -14, -19, -1, 23, -40, 26, 15, 30, 6, 40, -12, -34} e come secondo parametro il numero 20.

Scrivere l'insieme dei valori in a al termine dell'esecuzione di bang().


Soluzione: 33 3 27 1 23 26 15 30 6 40 -1 23 -40 26 15 30 6 40 -12 -34


La funzione scansiona la sequenza e copia ordinatamente solo i valori positivi.
I valori da -1 fino alla fine rimangono inalterati.