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:
- la funzione restituisce il numero di interi presenti nel vettore
- la funzione restituisce il massimo valore presente nel vettore
- la funzione restituisce la lunghezza della più lunga sottosequenza ordinata (in modo strettamente crescente) all'interno del vettore
- nessuna delle precedenti affermazioni è vera.
Soluzione
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.