Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 4 liczniki
dsinfo
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 2
Dołączył: 30.03.2006

Ostrzeżenie: (10%)
X----


Witam! Mam problem z następującym zadaniem. Otóż muszę napisać aplikację licznika. Dokładnie z czterema licznikami.
W oknie chcę wyświetlić obok siebie cztery liczniki w takiem układzie: A B C D . Te litery oznaczają wartości zwracane
przez liczniki. Każdy z nich liczy maksymalnie do 20 i zaczynają od 0.

Ma to dziłać tak:

Licznik D liczy od 0 do 20. W pierwszym etapie liczniki A,B i C przyjmują wartość 0, a licznik D ma również wartość 0.
W drugim etapie liczniki A,B,C mają 0, a licznik D ma 1.
Gdy, licznik D przyjmnie wartość 20, pozostałe nadal mają wartość 0.
I dopiero w następnym etapie licznik D przyjmuje wartość 0, a licznik C przyjmuje wartość 1.


A B C D

0 0 0 1

0 0 0 19

0 0 0 20

0 0 1 0


W dalszym etapie licznik C ma wartość 1, a licznik D ulega zwiększeniu, więc ma 1 i tak dalej.
Następnie, gdy wartość licznika D dojdzie do 20, to licznik C ma nadal 0. Ale, w następnym etapie licznik C przyjmnie
już wartość 2, a licznik D znowu 0 i zaczyna liczyć od nowa.

0 0 1 1

0 0 1 19

0 0 1 20

0 0 2 1

(...)


Gdy, wartość licznika C przyjmnie wartość 20 i licznik D przyjmnie wartość 20, to pozostałe nadal mają po 0.
W następnym kroku, licznik B przyjmnie wartość 1, a liczniki C i D ulegają wyzerowaniu i liczą od nowa.
I tak samo z licznikiem A. Gdy, Liczniki B,C,D przyjmą odpowiednio wartości 20 , 20 , 20 - licznik A ma wartość 0.
Ale, w następnym etapie licznik A przyjmnie wartość 1, pozostałe ulegną wyzerowaniu i liczą od nowa wg powyższego
schematu. Gdy, wartość licznika A przyjmnie wartość większą od 20 (ma być 21, czyli zostanie przepełniony licznik A),
to wszystkie liczniki (A,B,C,D) ulegają wyzerowaniu.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
prowseed
post
Post #2





Grupa: Zarejestrowani
Postów: 433
Pomógł: 64
Dołączył: 29.01.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Mam coś takiego napisane w TurboPascalu. Nie przepiszę Ci tego do php, bo mi się zwyczajnie nie chce. Pomijam już fakt, że zadanie jest banalne i wystarczy chwile pomyslec nad jego rozwiazaniem. Wkleję tylko kod, który jest Ci potrzebny do rozwiązania i go zmodyfikuję już pod Twoje potrzeby.

Kod
  repeat
        sec:=sec+1;
        if sec=60 then
            begin
            sec:=0;
            m:=m+1;
            end;
        if m=60 then
            begin
            m:=0;
            h:=h+1;
            end;
        WriteLn(h,' : ',m,' : ', sec);
        delay(1000);
  until h=20;
end.


Zamiast repeat ... until dajesz do while (oczywiscie z odpowiednio zmienionym warunkiem petli czyli np h<=20).
Jesli chcesz to zrobic poprzez odswiezanie strony, to w ogole zamiast petli daj na koncu po prostu header location ktory od razu komponuje zmienna get z odpowednio h,m,sec + sleep w skrypcie zeby wyswietlic wynik (czyli Twoje A B C D - o, musisz jedno dopisac) i potem na poczatku skrypu zczytuj wartosci poczatkowe. Ewentualnie zamiast header location zrobic jakis uposledzony licznik ktory na koncu skryptu bedzie otwieral plik, czyscil go i dopisywal wartosci ABCD.
Dodajesz tylko D (D++), reszte dodawania robia ify. Na warunek zamiast 20 powinienes chyba dac 21.
Gdzies sobie daj jeszcze warunek, ze jezeli A=B=C=D=20 to wszystko sie zeruje.

Do pracy (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 05:24