2001 – 4

Dire quale dei seguenti frammenti di programma calcola in j l’indice del primo elemento positivo del vettore di interi v contenente n elementi, posto che j sia inizializzato a zero (potete assumere che il vettore contenga sempre almeno un elemento positivo):

  1. for(i=0; i < n; i++) if(v[i] > 0) j=i;
  2. for(i=n-1; i >= 0; i--) if(v[i] > 0) v[j]=v[i];
  3. for(i=n-1; i >= 0; i--) if(v[i] > 0) j=i;

Soluzione: c.


Indentando il codice si può valutare correttamente…

  1. Assegna a j l’indice dell’ultimo elemento positivo
    for(i=0; i < n; i++)
        if(v[i] > 0)
            j=i;
  2. for(i=n-1; i >= 0; i--)
        if(v[i] > 0)
            v[j]=v[i];
  3. Scorre il vettore al contrario e assegna a j l’indice del primo elemento positivo
    for(i=n-1; i >= 0; i--)
        if(v[i] > 0)
            j=i;