W tym algorytmie obliczana jest średnia arytmetyczna tylko z dodatnich elementów tablicy. Żeby to zrobić poprawnie, potrzebne są dwie niezależne czynności:
- przejście po wszystkich elementach tablicy (sterowanie iteracją),
- zliczenie i zsumowanie tylko tych elementów, które spełniają warunek T[i] > 0 (filtr).
Zmienna i pełni rolę iteratora (indeksu tablicy). Jeśli algorytm ma sprawdzić 10 elementów, to i musi zostać zwiększone w każdym obiegu pętli, niezależnie od tego, czy bieżący element jest dodatni, czy nie. Dlatego instrukcja i=i+1 musi znajdować się na głównej, wspólnej ścieżce pętli (po połączeniu gałęzi "Tak" i "Nie"). Gdyby inkrementacja indeksu była wykonywana tylko warunkowo, pętla mogłaby utknąć na tym samym elemencie i nie przejść przez całą tablicę.
Zmienna n jest licznikiem warunkowym: ma reprezentować liczbę elementów dodatnich. Ponieważ w późniejszym kroku obliczane jest Srednia = Suma : n, wartość n musi zliczać wyłącznie elementy spełniające kryterium dodatniości. To oznacza, że instrukcja n=n+1 musi być wykonywana tylko na gałęzi "Tak" po sprawdzeniu T[i] > 0. Wtedy Suma akumuluje tylko dodatnie wartości, a n jest właściwym dzielnikiem.
Dlaczego pozostałe propozycje są niepoprawne? Zamiana ról (zwiększanie n w każdej iteracji, a i tylko warunkowo) miesza sterowanie pętlą z filtrowaniem danych i prowadzi do błędnego przejścia po tablicy lub błędnego licznika. Dekrementacja n=n-1 jest sprzeczna z ideą "zliczania" dodatnich elementów i może dawać wartości ujemne, co czyni wynik średniej bezsensownym. Poprawny dobór instrukcji to więc: X: i=i+1 oraz Y: n=n+1.