procek87 napisał(a):
dlaczego zmienna licznik przed while jest zainicjowana 6000 ?
Tak po prostu taki przykład Mirek dał. Wynikiem tego jest cyklicznie zliczający licznik właśnie od 6000 w dół do zera i gdy osiągnie zero znów wskakuje 6000 za co jest odpowiedzialna linijka na końcu:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
co do reszty to:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
licznik jest zmniejszany co każdy obieg pętli o 1.
kolejny kawałek, matematyczny służy tylko rozbiciu liczby z licznika na poszczególne cyfry, bo przecież biblioteka nie przewiduje wyświetlania liczb wielocyfrowych tylko można wyświetlić 4 pojedyncze cyfry więc licznik dzielimy przez 1000 i jeśli wynik jest różny od zera znaczy że w liczniku jest liczba czterocyfrowa a na wyświetlacz lewy wysyłamy cyfrę tysięcy, jeśli wynik dzielenia przez 1000 jest równy zero to wyświetlacz jest wygaszany.
Analogicznie dla pozostałych cyfr, czyli dla setek najpierw trzeba pozbyć się tysięcy jeśli w liczniku siedzi liczba 4-cyfrowa, następnie dzielimy przez 100 (dzielenie odbywa się na liczbach całkowitych stąd po dzieleniu przez 100 wszystko co nie jest pełną setką jest pomijane bez zaokrągleń) i uzyskujemy cyfrę setek. I tu oprócz warunku if który sprawdza czy cyfra setek jest większa od zera jest jeszcze jeden warunek "?" wartość zero może oznaczać albo że w liczniku jest liczba mniejsza od 100 wtedy wyświetlacz setek jest wygaszany (wysłanie NIC) albo też może oznaczać cyfrę większą od 999 gdzie akurat cyfra setek jest równa 0 i wtedy na wyświetlacz setek wysyłane jest zero.
Wyłuskiwanie cyfr dziesiątek i jedności odbywa się na podobnej zasadzie.
Oczywiście tę całą procedurę można ubrać w funkcję i zaszyć ją w bibliotece wyświetlacza multipleksowanego i wtedy w pętli głównej będzie tylko wywołanie tej funkcji z argumentem w postaci wartości licznika, funkcja rozbije liczbę na cyfry i wyśle na wyświetlacze