1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
| { Date de Pques }
PROGRAM DDP;
USES Crt;
TYPE
TDate=RECORD
Jour:Byte;
Mois:Byte;
Annee:Word;
ToutesLettres:String;
END;
VAR
Annee:Word;
Date:TDate;
PROCEDURE CalculDateDePaques(a:Word;var ddp:TDate);
{ Algorithme d'Oudin }
var G,C,C4,E,H,K,P,Q,I,B,J1,J2,R:Word;
begin
ddp.Annee:=a;
G:=a mod 19;
C:=a div 100;
C4:=C div 4;
E:=(8*C+13) div 25;
H:=(19*G+C-C4-E+15) mod 30;
K:=H div 28;
P:=29 div (H+1);
Q:=(21-G) div 11;
I:=(K*P*Q-1)*K+H;
B:=(a div 4)+a;
J1:=B+I+2+C4-C;
J2:=J1 mod 7;
R:=28+I-J2;
if R<32
then
begin
ddp.Jour:=R;
ddp.Mois:=3;
end
else
begin
ddp.Jour:=R-31;
ddp.Mois:=4;
end;
end;
PROCEDURE DateLitterale(var d:TDate);
const
sp:Char=Chr(32);
var
jstr,mstr,astr:String;
begin
Str(d.Jour,jstr);
if jstr='1' then jstr:='1er';
case d.Mois of
3:mstr:='mars' ;
4:mstr:='avril' ;
end ;
Str(d.Annee,astr);
d.ToutesLettres:=jstr +sp+ mstr +sp+ astr;
end;
BEGIN
TextBackground(Blue);
TextColor(Yellow);
ClrScr;
Window(4,3,80,25);
WriteLn('Date de Pques dans le calendrier grgorien.');
WriteLn;
WriteLn;
TextColor(White);
WriteLn('Veuillez entrer une anne
partir de 1583 :');
WriteLn;
ReadLn(Annee);
WriteLn;
CalculDateDePaques(Annee,Date);
DateLitterale(Date);
WriteLn('Le Dimanche de Pques est le ',Date.ToutesLettres,'.');
WriteLn;
ReadKey;
END. |
Partager