|
Written by Administrator
|
|
Monday, 11 January 2010 20:03 |
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.
|