Assumendo che tu interrompa il ciclo for con l'istruzione
break, l'ultima iterazione nel corso della quale il valore di
C era positivo (o nullo) sarà data da
iterazione-1 (dove
iterazione è l'indice del ciclo for)
N=100;
C=13;
for iterazione=1:N
n_rand=randi(3,1,1);
C=C-n_rand
if(C < 0)
disp(sprintf('Il valore di C è diventato negativo\nalla %d iterazione',iterazione))
disp(sprintf('quindi l''ultima iterazione valida è la numero %d',iterazione-1))
break
end
end
if(iterazione == N)
disp('Il numero C non è mai diventato negativo')
end
Una soluzione alternativa può essere utilizzare un contatore che viene incrementato solo fino a quando il valore di
C è positivo (o nullo).
In questo caso il valore della variabile
contatore, al termine del loop, sarà uguale a
iterazione -1
N=100;
C=13
contatore=0;
for iterazione=1:N
n_rand=randi(3,1,1);
C=C-n_rand
if(C < 0)
disp(sprintf('Il valore di C è diventato negativo\nalla %d iterazione',contatore))
break
end
contatore=contatore+1
end
if(iterazione == N)
disp('Il numero C non è mai diventato negativo')
end
In entrambe le implementazioni è opportuno inserire un controllo per verificare se il ciclo for si sia concluso senza che la variabile
C sia diventata negativa.