Une solution pour l'exercice 5 du TP3 d'informatique
en MIAS+MASS S1
PROGRAM calendrier ;
VAR mois, jour, numero: integer ;
dateOK : boolean ;
joursemaine : string[10] ;
BEGIN
(* saisie *)
writeln('Donnez-moi une date en 2001 :') ;
(* saisie du mois *)
repeat
write('mois ') ;
readln(mois) ;
until (mois>=1) and (mois <=12) ;
(* saisie du jour *)
repeat
write('jour ') ;
readln(jour) ;
dateOK:=(jour>=1) and (jour<=31) ;
case mois of
2 : if jour>29 then dateOK:=false ;
4,6,9,11 : if jour>30 then dateOK:=false ;
end ;
until dateOK ;
(* calcul du numero et du jour de la semaine *)
case mois of
1 : numero:=jour ;
2 : numero:=31+jour ;
3 : numero:=31+29+jour ;
4 : numero:=31+29+31+jour ;
5 : numero:=31+29+31+30+jour ;
6 : numero:=31+29+31+30+31+jour ;
7 : numero:=31+29+31+30+31+30+jour ;
8 : numero:=31+29+31+30+31+30+31+jour ;
9 : numero:=31+29+31+30+31+30+31+31+jour ;
10 : numero:=31+29+31+30+31+30+31+31+30+jour ;
11 : numero:=31+29+31+30+31+30+31+31+30+31+jour ;
12 : numero:=31+29+31+30+31+30+31+31+30+31+30+jour ;
end ;
(* détermination du jour de la semaine *)
case (numero mod 7) of
0 : joursemaine:='vendredi' ;
1 : joursemaine:='samedi' ;
2 : joursemaine:='dimanche' ;
3 : joursemaine:='lundi' ;
4 : joursemaine:='mardi' ;
5 : joursemaine:='mercredi' ;
6 : joursemaine:='jeudi' ;
end ;
(* affichage du résultat *)
writeln('Le ',jour,'/',mois,'/2000 était le jour numéro ',numero) ;
writeln('C''était un ', joursemaine) ;
END.