PROGRAM tp4exc2 ;
USES crt ;
(* pour une date de l'annee 2000 , année bissextile commencant un samedi *)
VAR jour, mois : integer ;
numero, joursemaine : integer ;
erreur : boolean ;
continuer : char ;
BEGIN
clrscr ;
repeat
(* saisir une date conforme *)
repeat
(* saisir la date *)
write('jour (1-31) ? ') ; readln(jour)
;
write('mois (1-12) ? ') ; readln(mois)
;
(* verifier que la date est conforme
*)
erreur:=( (jour>30) and ((mois=4) or
(mois=6) o r(mois=9) or (mois=11)) );
erreur:=( erreur or ((jour=29) and (mois=2))
) ;
erreur:=( erreur or (mois<1) or (jour<1)
) ;
if erreur then writeln('date non conforme')
until (not erreur) ;
(* calculer le numero du jour dans l'annee *)
case mois of
1 : numero:=jour ;
2 : numero:=31+jour ;
3 : numero:=60+jour ;
4 : numero:=91+jour ;
5 : numero:=121+jour ;
6 : numero:=152+jour ;
7 : numero:=182+jour ;
8 : numero:=213+jour ;
9 : numero:=244+jour ;
10 : numero:=274+jour ;
11 : numero:=305+jour ;
12 : numero:=335+jour ;
end ;
write('le ',jour:2,'/',mois:2,'/2000 est le ') ;
writeln(numero,'-ieme jour de l''annee,') ;
(* calculer le jour de la semaine *)
joursemaine:=numero mod 7 ;
write('c''est un ') ;
case joursemaine of
0 : writeln('vendredi') ;
1 : writeln('samedi') ;
2 : writeln('dimanche') ;
3 : writeln('lundi') ;
4 : writeln('mardi') ;
5 : writeln('mercredi') ;
6 : writeln('jeudi') ;
end ;
write('continuer [o/n] ? ') ; readln(continuer) ;
until (continuer='n') or (continuer='N') ;
END.
(********************)