2001 – 6

Considerate il seguente frammento di programma:

t=-1;
for(i=1; i <= n; i++)
    if(f(i))
        t=i;
if(t >= 0)
    printf("%d\n", t);

Quale delle seguenti affermazioni è corretta?

  1. Il programma cerca e stampa il più piccolo intero x fra 1 e n tale che f(x)!=0;
    se tale intero non esiste, il programma entra in un ciclo infinito.
  2. Il programma cerca e stampa il più grande intero x fra 1 e n tale che f(x)!=0;
    se tale intero non esiste, il programma entra in un ciclo infinito.
  3. Il programma cerca e stampa il più piccolo intero x fra 1 e n tale che f(x)!=0;
    se tale intero non esiste, il programma non stampa nulla.
  4. Il programma cerca e stampa il più grande x fra 1 e n tale che f(x)!=0;
    se tale intero non esiste, il programma non stampa nulla.

Soluzione: d (Il programma cerca e stampa il più grande x fra 1 e n tale che f(x)!=0; se tale intero non esiste, il programma non stampa nulla.)


Il ciclo for() scorre gli interi da 1 a n e se f(i)<>0 allora t=i.
Alla fine del ciclo la variabile t contiene l’indice più grande tale che…
Se la variabile t alla fine del ciclo è ancora -1 allora non esiste i tale che… e non la stampa.