Contare quante volte si ripete un ciclo for

di il
3 risposte

Contare quante volte si ripete un ciclo for

Ciao a tutti,
ho fatto un programma che ripete un ciclo per N volte (argomento della funzione che decido io), ma si ferma quando il valore di un'altra variabile C diventa negativo.
Alla fine devo dividere un altro numero A per il numero N per il quale si è ripetuta la simulazione

Se faccio A/N il risultato è corretto soltanto quando C non è diventato negativo, ma non so come fare per trovare quante volte il ciclo è stato effettuato.

Esiste un comando che permette di "contare" quante volte si ripete il ciclo for?

Grazie

3 Risposte

  • Re: Contare quante volte si ripete un ciclo for

    Non è molto chiaro, forse se mandi il codice o fornisci un esempio si capisce meglio. Sostanzialmente un ciclo for si costruisce a partire da un vettore, motivo per cui sai già quante volte verrà eseguito. Se invece parli di un ciclo while, allora le cose cambiano. In realtà non mi è per niente chiaro cosa faccia il tuo programma.
  • Re: Contare quante volte si ripete un ciclo for

    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.
  • Re: Contare quante volte si ripete un ciclo for

    Grazie mille, con il break ho risolto tutto!!!
Devi accedere o registrarti per scrivere nel forum
3 risposte