Witam! Chciałbym aby mi ktoś pomógł w napisaniu algorytmu Gaussa na obliczenie w którym dniu przypadać będzie Wielkanoc wytypowanym przez nas roku.(Free Pascal). Będę niezmiernie wdzięczny osobie która pomoże rozwiązać mój problem. Oczywiscie jeżeli byłaby taka możliwość nie chciałbym aby była używana funkcja(“function”).
Należy wartości liczb X,Y (dla kalendarza gregoriańskiego) przyjąć nastepujące:
do roku 1582 X=15, Y=6
1583-1699 X=22,Y=2
1700-1799 X=23,Y=3
1800-1899 X=23,Y=4
1900-2099 X=24,Y=5
2100-2199 X=24,Y=6
Następnie obliczyć
resztę a z dzielenia liczby roku przez 19,
resztę b z dzielenia liczby roku przez 4
resztę c z dzielenia liczby roku przez 7
resztę d z dzielenia liczby 19a+X przez 30
resztę e z dzielenia liczby 2b+4c+6d+Y przez 7
Wtedy
jezeli d=29,e=6 to wielkanoc przypada 26 kwietnia,
jeśli d=28,e=6 i dzielenie 11*X+11 przez 30 daję resztę mniejszą niż 19 to wielkanoc jest obchodzona 18 kwietnia
w przeciwnym wypadku
jeżeli (d+e)<10 to wielkanoc = (22+d+e)marca
jezeli (d+e)>9 to wielkanoc = (d+e-9) kwietnia
Dzięki i pozdrawiam!
– Dodane 07.02.2011 (Pn) 21:00 –
program wielkanoc;
uses crt;
var r,a,b,c,d,e:real;
Begin
clrscr;
writeln(‘Podaj rok w którym chciałbyś się dowiedzieć kiedy jest Wielkanoc’);
readln®;
case r of
1…1582 : Begin
x:=15;
y:=6;
end;
1583…1699 : begin
x:=22;
y:=2;
end;
1700…1799 : begin
x:=23;
y:=3;
end;
1800…1899 : begin
x:=23;
y:=4;
1900…2099 : begin
x:=24;
y:=5;
end;
2100…2199 : begin
x:=24;
y:=6;
end;
a:=r mod 19;
b:=r mod 4;
c:=r mod 7;
d:=((19*a)+x) mod 30;
e:=((2*b)+(4*c)+(6*d)+y) mod 7;
If d=29, e=6 then
writeln(‘Wielkanoc przypada 26 kwietnia’);
else
d=28, e=6 11*x+11 mod 30 19 then
writeln (‘Wielkanoc przypada 18 kwietnia’);
else
(d+e)10 then wirteln(‘Wielkanoc przypada’,22+d+e,‘marca’);
else
(d+e)9 then writlen (‘Wielkanoc przypada’,d+e-9,‘kwietnia’);
end;
End.
Jak na razie tyle zrobiłem czy jest ktoś w stanie mi pomóc? Jest tu parę błędów ale nie potrafię się ich doszukać…