Diagonales de la matrice

calculer la somme des element de premier diagonal et la 2eme diagonal puis le transposé d'une matrice en utilisant un methode recursif:


program som_trans;
uses wincrt;
type
mat=array[1..10,1..10] of integer;
var n,j,i:integer; m:mat;
{*******************************************}
procedure remlissage(var m:mat;n:integer);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
write('M[',i,',',j,']=');
readln (M[i,j]);
end;
end;
{**********************************************}
function som_diag1(m:mat; n,i:integer):integer;
begin
if i=N then som_diag1:=m[n,n]
else
som_diag1:=m[i,i]+som_diag1(m,n,i+1);
end;
{*****************************************}
function som_diag2(m:mat; n,i:integer):integer;

begin
if i=N then som_diag2:=m[n,1]
else
som_diag2:=m[i,n-i+1]+som_diag2(m,n,i+1);
end;

{transposé da la matrice}
procedure trans(var M:mat;n:integer; var i,j:integer);
var aux:integer;
begin
if i<=n then
begin
if j<=i-1 then
begin
aux:=m[i,j];
m[i,j]:=m[j,i];
m[j,i]:=aux;
j:=j+1;
trans(m,n,i,j);
end;
j:=1;
i:=i+1;
trans(m,n,i,j);
end;

end;

{********************************************}

begin
write('nombre des lignes= '); readln(n);
remlissage(m,n);
i:=1;
writeln('somme diago1 = ', som_diag1(m,n,i));
i:=1;
writeln('somme diago2 = ',som_diag2(m,n,i));
i:=1; j:=1;
trans(M,n,i,j);
{affichage de la matrice}
for i:=1 to n do
begin
for j:=1 to n do
write(m[i,j],' ');
writeln;
end;

end.

Aucun commentaire: