(***** TP6exc1 : une solution *****)
PROGRAM MATRICE ;

USES Crt ;

VAR
dim : integer ; { dimension de la matrice }
i,j : integer ; { compteurs }
Mat : Array[1..24,1..24] of integer ;
Tmp : integer ;

PROCEDURE Initialiser ;
Begin
For i:=1 to dim do For j:=1 to dim do mat[i,j]:=0
End;

FUNCTION ChiffreAlea : integer ;
Begin
ChiffreAlea:=Random(19)-9 ;
End;

PROCEDURE Scalaire ;
Begin
Tmp:=ChiffreAlea ;
For i:=1 to dim do Mat[i,i]:=Tmp;
End;

PROCEDURE Diag1 ;
Begin
For i:=1 to dim do Mat[i,i]:=ChiffreAlea ;
End;

PROCEDURE Diag2 ;
Begin
For i:=1 to dim do Mat[i,dim+1-i]:=ChiffreAlea ;
End;

PROCEDURE TriangS ;
Begin
For j:=1 to dim do For i:=1 to j do Mat[i,j]:=ChiffreAlea ;
End;

PROCEDURE TriangI ;
Begin
For i:=dim DownTo 1 do For j:=1 to i do Mat[i,j]:=ChiffreAlea ;
End;

PROCEDURE Quelconque ;
Begin
For i:=1 to dim do For j:=1 to dim do Mat[i,j]:=ChiffreAlea ;
End;

PROCEDURE Afficher;
Begin
For i:=1 to dim do
Begin
For j:=1 to dim do Write(mat[i,j]:3);
Writeln;
End;
End;

BEGIN
ClrScr;
Randomize;

(* saisir les parametres *)
Writeln('Quelle est la dimension de votre matrice ?');
Readln(dim);
If dim>24 then dim:=24;
ClrScr;
Writeln('Quelle forme pour votre matrice ?');
Writeln('[1] Scalaire');
Writeln('[2] PremiŠre diagonale');
Writeln('[3] DeuxiŠme diagonale');
Writeln('[4] Triangulaire sup');
Writeln('[5] Triandgulaire inf');
Writeln('[6] Quelconque');
Readln(Tmp);

Initialiser;

(* construire la matrice *)
Case Tmp of
1: Scalaire;
2: Diag1;
3: Diag2;
4: TriangS;
5: TriangI;
6: Quelconque;
End;

Afficher;
Readln;

End.

(********************)