2003 – 4

Si consideri la seguente funzione conta() che prende in input un vettore di numeri di lunghezza n (assumendo che n sia compreso fra 2 e 100):

int conta(int vett[], int n)
{
    int i, 
        k=0;
    int j=1;
    for(i=0; i < n-1; i++)
       if(vett[i] < vett[i+1])
          j++;
       else
       {
          if(k < j)
             k=j;
          j=1;
       }
    return k;
 }

Quale delle seguenti affermazioni è vera?

Risposte:

  1. la funzione restituisce il numero di interi presenti nel vettore
  2. la funzione restituisce il massimo valore presente nel vettore
  3. la funzione restituisce la lunghezza della più lunga sottosequenza ordinata (in modo strettamente crescente) all'interno del vettore
  4. nessuna delle precedenti affermazioni è vera.

Soluzione: c / d.


Risposta ufficiale

Se la sottosequenza più lunga non è l’ultima del vettore, allora la funzione ne restituisce la lunghezza (risposta c); se, invece, questa sottosequenza è l’ultima del vettore, il programma non ne conta correttamente la lunghezza (risposta d).

Si decide, dunque, di ritenere valida sia la risposta c che la d.