Mam prośbę potrzebują zapisać wieczny kalendarz w pewnym języku skryptowym (nieważne jakim)
w każdym razie chciał bym zrozumieć zasadę działania algorytmu (w tedy będzie mi łatwiej go zapisać). Dobra przechodząc do sedna, chciałem skorzystać z algorytmu umieszczonego w Wikipedi „http://pl.wikipedia.org/wiki/Wieczny_kalendarz” no i mam zgrys nie wiem co dalej z tym zrobić:
mamy taki schemat:
M := 1 + (Month + 9) mod 12 ; if M>10 then Dec(Year) ;
C := Year div 100 ; D := Year mod 100 ;
N := ((13M-1) div 5 + D + D div 4 + C div 4 + 5C + 1) mod 7 ; ?
N := ((13M-1) div 5 + D + D div 4 + C div 4 + 5C) mod 7 ; ?
nie wiem dlaczego jest dwa razy zapisana zmienna N, to znaczy domyślam się, że chodzi o kalendarz Juliański i Gregorjański (mi chodzi oczywiście o gregoriański i jest to chyba druga zmienna N bez +1). No dobra zapisałem to sobie tak:
int day = 13;
int month = 7;
int year = 1982;
int m;
int c;
int d;
int n;
m = 1+ (month + 9) % 12;
if (m > 10)
year = year - 1;
c = year / 100;
d = year % 100 ;
n = ((13*m-1) / 5 + d +d / 4 + c / 4 + 5*c +1)%7;
i teraz, jeżeli wszystko jest poprawnie to jak mam sprawdzić jaki to jest dzień? Nie jest to tam do końca wyjaśnione (to znaczy wiem, że jest to N = kod dnia tygodnia poczynając od niedzieli (0) do soboty (6) ) ale nie jest tu napisane w którym momencie użyć mojej zmiennej "day", jak mam uzyskać ten numer dnia.
Jest też algorytm zapisany w języku C ale nie do końca wiem jak on ma działać gdyż w obliczeniach jest użyta zmienna logiczna a w javie kompilator nie wie co z tym zrobić.
Dodam tylko, że bardzo zależy mi właśnie na takim prostym kodzie bez pętli (chodzi o docelowy język).