(* Une solution du TP3          18 octobre 2000 *)
(*******************************)
PROGRAM tp3exc1a ;
VAR x, somme : real ;
         nombre : integer ;
BEGIN
nombre:=0 ;
somme:=0 ;
repeat
   write('donnez-moi un reel (0 pour terminer) ? ') ;
   readln(x) ;
   if x<>0 then
      begin
      nombre:=nombre+1 ;
      somme:=somme+x ;
      end ;
   until x=0 ;
writeln('il y a ',nombre,' reels') ;
writeln('leur somme est : ',somme:1:3) ;
writeln('leur moyenne est : ',somme/nombre) 
readln ;
END.
(******************************)
PROGRAM tp3exc1b ;
VAR x, somme, maximum, minimum : real ;
         nombre : integer ;
BEGIN
nombre:=0 ;
somme:=0 ;
maximum:=0 ;
minimum:=0 ;
repeat
   write('reel ? ') ;
   readln(x) ;
   if x<>0 then
      begin
      nombre:=nombre+1 ;
      somme:=somme+x ;
      if (nombre=1) or (x>maximum) then maximum:=x ;
      if (nombre=1) or (x<minimum) then minimum:=x ;
      end ;
   until x=0 ;
writeln('il y a ',nombre,' reels') ;
writeln('leur somme est : ',somme:1:3) ;
writeln('leur moyenne est : ',somme/nombre) ;
write('leur maximum est : ', maximum) ;
writeln(' et leur minimum est : ',minimum) ;
readln ;
END.
(****************************)
PROGRAM tp3exc2_1 ;
VAR nom : string ;
         note : integer ;
         resultat : real ;
BEGIN
write('quel est votre nom ? ') ; readln(nom) ;
write('note de maths ? ') ; readln(note) ;
resultat:=note*3 ;
write('note de physique ? ') ; readln(note) ;
resultat:=resultat+note*2.5 ;
write('note de chimie ? ') ; readln(note) ;
resultat:=resultat+note*2.5 ;
write('note d''informatique ? ') ; readln(note) ;
resultat:=resultat+note*2 ;
resultat:=resultat/(3+2.5+2.5+2) ;
write('le resultat de ',nom,' est ',resultat:1:1,' mention : ') ;
if resultat>=16
   then writeln('tres bien')
   else if resultat>14 then writeln('bien')
   else if resultat>12 then writeln('assez bien')
   else if resultat>10 then writeln('passable')
   else writeln('recale') ;
END.
(*******************************)
PROGRAM tp3exc2_2 ;
VAR nom, reponse : string ;
         note : integer ;
         resultat : real ;
         effectif, recus : integer ;
BEGIN
effectif:=0 ;
recus:=0 ;
repeat
   write('encore un etudiant ? ') ; readln(reponse) ;
   if (reponse<>'non') AND (reponse<>'NON')
      then
         begin
         effectif:=effectif+1 ;
         write('quel est votre nom ? ') ; readln(nom) ;
         write('note de maths ? ') ; readln(note) ;
         resultat:=note*3 ;
         write('note de physique ? ') ; readln(note) ;
         resultat:=resultat+note*2.5 ;
         write('note de chimie ? ') ; readln(note) ;
         resultat:=resultat+note*2.5 ;
         write('note d''informatique ? ') ; readln(note) ;
         resultat:=resultat+note*2 ;
         resultat:=resultat/(3+2.5+2.5+2) ;
         write('le resultat de ',nom,' est ',resultat:1:1,' mention : ') ;
         if resultat>=16 then writeln('tres bien')
            else if resultat14 then writeln('bien')
            else if resultat12 then writeln('assez bien')
            else if resultat10 then writeln('passable')
            else writeln('recale') ;
         if resultat>=10 then recus:=recus+1 ;
         end ;
   until (reponse='non') OR (reponse='NON') ;
writeln('Pourcentage de recus : ', recus*100/effectif:1:1) ;
END.
(******************************)
PROGRAM tp3exc3 ;
VAR nom1, nom2 : string ;
         de1, de2 : integer ;
         score1, score2 : integer ;
         ncoups : integer ;
         fini : boolean ;
BEGIN
randomize ;
write('Nom du premier joueur ? ') ; readln(Nom1) ;
write('Nom du deuxieme joueur ? ') ; readln(Nom2) ;
writeln('C''est ', nom1,' qui commence') ;
ncoups:=0 ;
fini:= false ;
while (not fini) do
   begin
   de1:=random(6)+1 ;
   de2:=random(6)+1 ;
   ncoups:=ncoups+1 ;
   score1:=score1+de1+de2 ;
   write('jeu ',ncoups:2,' de ',nom1:20,' : ',de1,' , ') ;
   writeln(de2,' -> score ',nom1,' : ',score1) ;
   fini:=(de1=de2) or (score1>=50)
   if fini
      then writeln(nom1, ' gagne en ',ncoups,' coups.')
      else begin
             de1:=random(6)+1 ;
             de2:=random(6)+1 ;
             score2:=score2+de1+de2 ;
             write('jeu ',ncoups:2,' de ',nom2:20,' : ',de1,' , ') ;
             writeln(de2,' -> score ',nom2,' : ',score2) ;
             fini:=(de1:=de2) or (score2>=50) ;
             if fini then writeln(nom2, ' gagne en ',ncoups,' coups.') ;
            end ;
   end ;
   END.
(******************************)