Implementazioni di algoritmi/Calcolo della Pasqua: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Riga 365:
 
==Delphi==
<source lang=Delphi>
 
'''unit''' UPasqua;
'''interface'''
'''uses''' SysUtils;
'''function''' Pasqua(anno : Word) : TDateTime;
'''implementation'''
'''function''' Pasqua(anno : Word) : TDateTime;
'''var'''
M, N : Word;
a, b, c, d, e : Word;
mese, giorno : Word;
'''begin'''
'''if''' '''not''' (anno '''in''' [1583..2499]) '''then''' '''begin'''
MessageBox(0, PChar('L' + #39 + 'anno deve essere maggiore di 1582 ed inferiore di 2500'),
'Errore', MB_OK '''or''' MB_ICONERROR);
Result := Now;
Exit;
'''end''';
'''case''' anno '''of'''
1583..1699 : '''begin''' M := 22; N := 2; '''end''';
1700..1799 : '''begin''' M := 23; N := 3; '''end''';
1800..1899 : '''begin''' M := 23; N := 4; '''end''';
1900..2099 : '''begin''' M := 24; N := 5; '''end''';
2100..2199 : '''begin''' M := 24; N := 6; '''end''';
2200..2299 : '''begin''' M := 25; N := 0; '''end''';
2300..2399 : '''begin''' M := 26; N := 1; '''end''';
2400..2499 : '''begin''' M := 25; N := 1; '''end''';
'''else''' '''begin''' M := 0; N := 0; '''end''';
'''end''';
a := anno '''mod''' 19;
b := anno '''mod''' 4;
c := anno '''mod''' 7;
d := (19 * a + M) '''mod''' 30;
e := (2 * b + 4 * c + 6 * d + N) '''mod''' 7;
'''if''' d + e < 10 '''then''' '''begin'''
mese := 3;
giorno := d + e + 22;
'''end'''
'''else''' '''begin'''
mese := 4;
giorno := d + e - 9;
'''end''';
'''if''' ((giorno = 26) '''and''' (mese = 4)) '''or'''
((giorno = 25) '''and''' (mese = 4) '''and''' (d = 28) '''and''' (e = 6) '''and''' (a > 10)) '''then'''
Dec(giorno, 7);
Result := EncodeDate(anno, mese, giorno);
'''end''';
'''end'''.
<source>
 
==SQL==