matematykaszkolna.pl
program program: Wroce jeszcze do tego programu z wyznaczaniem daty (dla dowolnego roku) przypadajacej w najblizszy dzien po X−tym dniu danego miesiaca. Jakby wygladal algorytm dla tego programu? 1) ... 2) ... 3) ...
28 gru 00:18
program: 1) na pewno trzeba uwzględnić przestępność roku w kalendarzu gregoriańskim 2) obliczyć jakim dniem tygodnia jest pierwszy dzień w danym roku czy w miesiącu ?
28 gru 14:57
program: Czy na cos jeszcze trzeba zwrocic uwage? Chcialbym sprobowac sam napisac to w kodzie.
28 gru 17:24
program: ?
28 gru 22:36
Basia: kiedyś taki program pisałam (w świętej pamięci pascalu) załóż sobie jakąś datę początkową np. 01.01.2000 (o ile pamiętam to była niedziela, ale sprawdź) bo chyba nie wiemy jakim dniem był 1 stycznia roku 0001 no chyba, że masz jakieś dodatkowe założenie potem w zależności od roku wyznacz co było 1 stycznia danego roku (do przodu lub do tyłu) czyli uwzględniaj te lata przestępne pamiętaj, że rok jest przestępny ⇔ [(rok podzielny przez 4 i niepodzielny przez 100) lub (podzielny przez 400)] a potem dopiero pierwszy dzień szukanego miesiąca tak chyba jest trochę dłuższy, ale za to bardziej przejrzysty algorytm
28 gru 23:01
program: Dziekuje. A jak majac wyznaczony dzien tygodnia podanej daty wyznaczyc najblizsza sobote czerwca po 21 czerwca w podanym roku, ktorego dzien tygodnia znamy? Czyli np. mam date 23.01.2004, ktory byl piatkiem i jak teraz wyznaczyc najblizsza sobote czerwca po 21 czerwca w 2004 roku?
29 gru 20:55
Basia: 23 stycznia − piątek to 24 stycznia sobota policz dni od 25 stycznia do 21 czerwca (31−24)+29+31+30+31+21 = 7+121+21 = 149 149:7 = 21 reszta 2 czyli 21 czerwca masz poniedziałek czyli za 5 dni będzie sobota 21+5 = 26 czerwca
29 gru 22:15
program: Ok. Dziekuje. A dlaczego mam liczyc od 25 stycznia a nie od 24 stycznia?
29 gru 22:29
Basia: żeby po doliczeniu do 7 (lub wielokrotności 7) znów trafić na sobotę trzeba liczyć od niedzieli n, pon,wt, śr, cz, pi, sobota
29 gru 22:42
program: Ok. A jakbym chcial wyznaczyc np. date drugiego poniedzialku maja w 2004 roku wiedzac o tym, ze 23.01.2004 to piatek?
29 gru 22:50
program: Jest to mozliwe majac takie dane?
30 gru 00:42
Basia: można tak zaczynam od piątku sprawdzam co będzie 1 maja n = (31−23)+29+31+30 = 8+29+31+30 = 98 98/7 = 14 reszta 0 czyli 1 maja mamy piątek 5+3=1 (mod7) czyli pierwszy poniedziałek maja to 1+3 czyli 04.05.2004 no to drugi to 4+7 czyli 11 maja coś w rodzaju takiej pętli mam piątek czyli a=5 for i=1 to 7 b = a+i if reszta z dzielenia b przez 7 = 1 mam poniedziałek i0 = i jezeli się da "wyskocz" z pętli, a jak nie to trudno endif next do dnia daty dodajesz i0 i to jest pierwszy poniedziałek po tej dacie drugi to jeszcze + 7
30 gru 12:17
Basia: może być pętla typu "while" i0=0 while "reszta z dzielenia a+i0 przez 7≠1" i0=i0+1 end szukany poniedziałek to 1(1 maja)+i0+7
30 gru 12:54
program: Ale 1 maja 2004 roku to sobota. To co jest zle?
31 gru 02:26
Basia : A 23.01 na pewno był piątek? Przeanalizuję to jeszcze raz później ale najpierw sprawdź ten 23.01
31 gru 10:32
Basia : n małe jest źle Tam jest doliczone do końca kwietnia. Jeszcze +1 jeżeli chcesz mieć 1 maja.
31 gru 10:38
program: Dziekuje, czyli ten dzien, ktorego dnia tygodnia szukamy musi byc wliczony w te sume.
31 gru 16:20
Basia: Tak. emotka Owocnego programowania w Nowym Roku emotka
31 gru 18:36
program: Dziekuje.
31 gru 20:13