Si consideri il seguente frammento di programma
bool verifica(int vett[], int n) { int i,j=0; int appoggio[n]; for(i=0; i < n; i++) if(j == 0) { appoggio[j]=vett[i]; j++; { else if(appoggio[j-1] == vett[i]) j--; else { appoggio[j]=vett[i]; j++; } if(j == 0) return true; else return false; }Si considerino i seguenti tre vettori
- {5,8,1,1,2,4,4,8,8,2,3,9,7,7,9,3,8,2,2,5}
- {6,7,9,9,5,4,3,3,4,5,7,6,2,2,2,2,4,5,4,5}
- {3,3,3,2,2,3,1,5,5,1,3,5,7,6,6,7,5,3,1,1}.
Si supponga di invocare tre volte la funzione verifica passando nell'ordine i tre vettori (assumendo che il secondo parametro sia 20 in tutti e tre i casi).
Quali tre valori saranno restituiti nell'ordine dalle tre invocazioni?
Risposte:
- true-false-true
- true-true-true
- true-false-false
- nessuna delle precedenti
Soluzione: a (true-false-true)
L'indice j si sposta avanti e indietro... e punta a un elemento nel vettore di appoggio...