PROCEDURE SAUT(n:integer) ;
Var i : integer ;
Begin
for i:=1 to n do writeln ;
End ;
PROCEDURE ECRIRE(c:char ; n:integer) ;
Var i : integer ;
Begin
for i:=l to n do write(c) ;
End;
PROCEDURE CADRE(long,haut:integer ; motif:char) ;
Var i, nbsaut, nb_blanc : integer ;
Begin
nb_saut:=(22-haut) div 2 ;
nb_blanc:=(80-long) div 2 ;
clrscr ;
SAUT(nb_saut) ;
ECRIRE(' ',nb_blanc) ;
ECRIRE(motif,long) ;
if long<80 then writeln ;
for i:=1 to haut-2 do
begin
ECRIRE(' ',nb_blanc) ;
write(motif) ;
ECRIRE(' ',long-2) ;
if long<80
then writeln(motif)
else write(motif)
;
end ;
ECRIRE(' ',nb_blanc) ;
ECRIRE(motif,long) ;
writeln ;
SAUT(nb_saut) ;
End;
BEGIN (* principal *)
repeat
clrscr;
repeat
write('Longeur totale du cadre à tracer
(au plus 80) ? ') ;
readln(L) ;
until L<=80 ;
repeat
write('Hauteur totale du cadre à tracer
(au plus 22) ? ') ;
readln(h) ;
until h<=22 ;
(* 22 pour laisser la place a la question 'Un
autre cadre....' *)
write('caractère de base pour le cadre ? ');readln(m)
;
CADRE(L,h,m) ;
write('Un autre cadre (o/n) ? ') ;
readln(reponse);
until reponse='n' ;
END.