2003/04 – Fase scolastica – 04

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):

Type
   sequenza = Array[1..100] Of Integer;
 
Function conta(vett: sequenza; n: Integer): Integer;
Var
   i, j, k: Integer;
Begin
   i:=0;
   k:=0;
   j:=1;
   For i:=1 To n-1 Do
      If(vett[i] < vett[i+1]) Then
         j := j+1
      Else
         Begin
            If(k < j) Then
               k:=j;
            j:=1;
         End;
   conta:=k
End;

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

Soluzioni commentate

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.