2003 – 1

Si consideri il seguente frammento di programma:

void quack(int *a, int *b, int *c, int l)
{
   int i=0, j=0, k=0;

   while(k < 2*l)
   {
      if((a[i] < b[j] && i < l) || j == l)
      {
         c[k]=a[i];
         i++;
      }
      else
      {
         c[k]=b[j];
         j++;
      }
      k++;
   }
}

Che problema risolve la funzione quack()?

Risposte:

  1. riempie c con gli elementi di a e b ordinati in modo crescente indipendentemente dall'ordine degli elementi in a e b
  2. riempie c con gli elementi di a e b ordinati in modo crescente se gli elementi in a e b sono ordinati in modo crescente
  3. riempie c in modo da riportare tutti i valori negativi di a all'inizio di c e quelli positivi di b alla fine di c
  4. nessuna delle precedenti.

Soluzione: b (riempie c con gli elementi di a e b ordinati in modo crescente se gli elementi in a e b sono ordinati in modo crescente)


Si tratta dell'algoritmo di fusione in c di due sequenze ordinate a e b di lunghezza l