(********************)
PROGRAM tp3bexc1 ;
VAR atrouver, propose : integer ;
compteur : integer;
BEGIN
randomize ;
atrouver:=random(32767)+1 ;
compteur:=0 ;
repeat
propose:=0 ;
compteur:=compteur+1 ;
write('essai numero ',compteur,' ? ') ; readln(propose)
;
if (propose<atrouver) then writeln('Trop petit') ;
if (propose>atrouver) then writeln('Trop grand') ;
until (propose=atrouver) or (compteur=15) ;
if (propose=atrouver)
then writeln('Gagne en ',compteur,' coups.')
else writeln('Perdu ! il fallait trouver ',atrouver) ;
END.
(********************)
PROGRAM tp3bexc2a ;
USES crt ;
VAR n, compteur : integer ;
BEGIN
clrscr ;
write('entier (entre 1 et 999 ? ') ; readln(n) ;
compteur:= 0 ;
while (n>1) do
begin
if ((n mod 2)=0)
then n:=n div 2
else n:=3*n+1 ;
compteur:=compteur+1 ;
(* pour un ecran de 80=8*10 caracteres *)
write(compteur:4,': ',n:4) ;
if ((compteur mod 8)=0) then writeln ;
end ;
writeln ;
END.
(********************)
PROGRAM tp3bexc2b ;
USES crt ;
VAR n, compteur, base : integer ;
BEGIN
clrscr ;
for n:=1 to 50 do
begin
compteur:= 0 ;
base:=n ;
while (n>base) do
begin
if ((n mod 2)=0)
then n:=n div 2
else n:=3*n+1 ;
compteur:=compteur+1 ;
(* pour un ecran de 80=8*10 caracteres
*)
write(compteur:4,': ',n:4) ;
if ((compteur mod 8)=0) then writeln
;
end ;
writeln ;
end ;
END.
(********************)
PROGRAM tp3bexc3a ;
USES crt ;
VAR niveau, hauteur : integer ;
proba : integer ;
BEGIN
clrscr ;
write('nombre de marches de l''escalier ? ') ;
readln(hauteur) ;
niveau:=0 ;
while (niveau<hauteur) do
begin
proba:=random(10) ;
case proba of
0,1,2,3 : begin
niveau:=niveau+1 ;
writeln(niveau,': c''est parti!') ;
end ;
4,5,6 : writeln(niveau,': oups!') ;
7,8 : if (niveau=0)
then writeln(niveau,': oups!')
else begin
niveau:=niveau-1 ;
writeln(niveau,': zut!') ;
end ;
9 : if (niveau=0)
then writeln(niveau,': oups!')
else begin
niveau:=0 ;
writeln(niveau,': aie! aie! aie!') ;
end ;
end ;
if (niveau=hauteur) then writeln(niveau,': j'y suis !')
;
end ;
END.
(********************)
PROGRAM tp3bexc3b ;
USES crt ;
VAR niveau, hauteur, nessais, npas, moyenne : integer ;
proba : integer ;
BEGIN
clrscr ;
write('nombre de marches de l''escalier ? ') ; readln(hauteur) ;
write('nombre d'essais ? ') ; readln(n) ;
niveau:=0 ;
npas:=0 ;
for i:=1 to nessais do
begin
while (niveau<hauteur) do
begin
proba:=random(10) ;
case proba of
0,1,2,3 : begin
niveau:=niveau+1 ;
writeln(niveau,': c''est parti!') ;
end ;
4,5,6 : writeln(niveau,':
oups!') ;
7,8 : if (niveau=0)
then writeln(niveau,': oups!')
else begin
niveau:=niveau-1 ;
writeln(niveau,': zut!') ;
end ;
9 : if (niveau=0)
then writeln(niveau,': oups!')
else begin
niveau:=0 ;
writeln(niveau,': aie! aie! aie!') ;
end ;
end ;
if (niveau=hauteur) then writeln(niveau,':
j'y suis !') ;
npas:=npas+1 ;
end ;
end ;
moyenne:=npas/nessais ;
writeln('Nombre moyen de pas par montée :',moyenne) ;
writeln('pour un escalier de ',hauteur,' marches'.) ;
END.
(****************************************)