program deuxieme_tp;



{ une procedure qui efface l'ecran }
procedure EffaceEcran;
var i : integer;
begin
  for i := 1 to 25 do begin
    writeln;
  end;
end;



{ une procedure qui repete un caractere }

procedure RepeteCaractere (n : integer ; c : char);
var i : integer;
begin
  for i := 1 to n do begin
    write(c);
  end;
end;



{ une procedure qui dessine un carre plein }

procedure CarrePlein (n : integer);
var i : integer;
begin
  for i := 1 to n do begin
    RepeteCaractere(n,'*');
    writeln;
  end;
end;



{ un triangle plein maintenant }

procedure TrianglePlein (n : integer);
var i : integer;
begin
  for i := 1 to n do begin
    RepeteCaractere(i,'*');
    writeln;
  end;
end;



{ un carre creux }

procedure CarreCreux (n : integer);
var i : integer;
begin

  { 1ere ligne }
  RepeteCaractere(n,'*');
  writeln;

  { lignes creuses }
  for i := 1 to n-2 do begin
    write('*');
    RepeteCaractere(n-2,' ');
    write('*');
    writeln;
  end;

  { derniere ligne }
  RepeteCaractere(n,'*');
  writeln;

end;



{ un triangle creux }

procedure TriangleCreux (n : integer);
var i : integer;
begin

  { 1ere ligne }
  writeln('*');

  { lignes creuses }
  for i := 2 to n-1 do begin
    write('*');
    RepeteCaractere(i-2,' ');
    write('*');
    writeln;
  end;

  { derniere ligne }
  RepeteCaractere(n,'*');
  writeln;

end;




{ Programme Principal }
begin

  EffaceEcran;
  TriangleCreux(15);

end.

