Napisz ten algorytm od nowa, bo się kupy nie trzyma.
if (ile == 0)
pierwsza = aktualna;
else
pierwsza = 1;
Po co to wykonywać co pętlę? Jeśli po to:
if ((aktualna == 42) && (poprzednia != 42) && (pierwsza != 42))
ile42++;
To obsłuż sobie pierwszą liczbę jako osobny przypadek.
if (((aktualna != 42) && (poprzednia != 42)) || ((aktualna == 42) && (poprzednia == 42)))
ile42 = 0;
Przecież tego nie powinieneś zerować?!
Po prostu wczytuj liczby i jeśli wczytana liczba to 42 to sprawdź jaka była poprzednia. Możesz sobie zainicializować zmienną poprzednia wartością 42 żeby nie musieć rozpatrywać osobno pierwszej cyfry.