program StampaFigure;
var
ch : char;
dimensione : integer;
quale_carattere : char;
spostamento : integer;
fine : boolean;
procedure StampaRiga (spazi, lung: integer; ch: char);
var
i : integer;
begin
for i := 1 to spazi do
write(' ');
for i := 1 to lung do
write(ch);
writeln
end;
procedure StampaQuadrato (lato : integer;
spost : integer;
car : char);
var
i : integer;
begin
for i := 1 to lato do
StampaRiga(spost, lato, car)
end;
procedure StampaTriangolo (altezza : integer;
spost : integer;
car : char);
var
i : integer;
begin
for i := 1 to altezza do
StampaRiga(spost+altezza-i, 2*i-1, car)
end;
procedure StampaSaluto;
begin
writeln('CIAO :-)')
end;
begin
fine := FALSE;
repeat
writeln;
writeln('*** IMMETTI UN CARATTERE A SCELTA FRA I SEGUENTI ***');
writeln('*** Q: stampa un quadrato');
writeln('*** T: stampa un triangolo');
writeln('*** F: per terminare il programma');
writeln;
readln(ch);
fine := (ch = 'f') or (ch = 'F');
if not fine then
begin
write('Di che dimensione? ');
readln(dimensione);
write('Di quanti caratteri spostato a destra? ');
readln(spostamento);
write('Con quale carattere va riempita la figura? ');
readln(quale_carattere);
case ch of
'Q', 'q' : StampaQuadrato(dimensione, spostamento, quale_carattere);
'T', 't' : StampaTriangolo(dimensione, spostamento, quale_carattere);
end
end
else
StampaSaluto
until fine
end.