Program transpose_matrice; Const nmax=10; Type Mat=array[1..nmax,1..nmax] of integer; Var M:Mat; n:integer; (*****************************) Procedure saisie (Var n:integer); Begin Repeat Writeln('Donner n :'); Readln(n); Until n in [1..nmax]; End; (*********************) Procedure remplir (Var M:Mat; n:integer); Var i, j:integer; begin For i:=1 To n Do For j:=1 To n Do Begin Writeln('Donner M[',i,',',j,']'); Readln(M[i,j]); End; End; (*******************************) Procedure Transpose (Var M:Mat;n:integer); Var aux,i,j:integer; Begin For i:=1 to n do For j:=1 to i-1 do Begin aux:=M[i,j]; M[i,j]:=M[j,i]; M[j,i]:=aux; End; End; (**************************) Procedure Affiche ( M:Mat; n:integer); Var i, j:integer; Begin For i:=1 to n do Begin For j:=1 to n do Write( M[i,j],' '); Writeln; End; End; {Programme Principal} Begin saisie (n); remplir (M, n); Transpose (M, n); Affiche (M, n); End.