(********************)

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.

(********************)