2000 – 8

Qual è il ciclo corretto per trovare l’indice del primo elemento negativo in un vettore dichiarato come

float v[MAX]?

  1. while(i < MAX) { if(v[i] >= 0) i++; }
  2. while(v[i] >= 0 && i < MAX) i++;
  3. while(i < MAX || v[i] < 0) i++;
  4. while(i < MAX && v[i] >= 0.0) i++;

Soluzione: d.


Infatti

  1. Incrementa i se l'elemento non è negativo, quando incontra un elemento negativo va in loop
  2. Prima controlla se l'elemento è non negativo e poi se l'indice è ancora valido...
  3. Incrementa i se l'elemento è negativo, quindi perde la posizione...
  4. Se l'indice è valido e se l'elemento non è negativo incrementa i.
    All'uscita del while() o i=MAX e non esistono elementi negativi oppure i<MAX e i indica la posizione del primo elemento negativo.