You are on page 1of 2

program matrice;

type mat=array[1..20,1..20] of integer;


var a:mat;
var i,j,m,n,s1,p1,max:integer;
procedure constructie_matrice(var a:mat;m,n:integer);
begin
for i:=1 to n do
for j:=1 to m do
begin
write('a[',i,',', j,']=');
readln(a[i,j]);
end;
end;
procedure afisare(a:mat;m,n:integer);
begin
for i:=1 to m do
begin
for j:=1 to n do
write(a[i,j],' ');
writeln; {trec la urmatorul rand}
end;
end;
procedure aplicatii(a:mat;n:integer);
begin
s1:=0;
{1. suma elementelor de pe diagonala principala}
{parcurgem matricea pe diagonala principala}
for i:=1 to n do
for j:=1 to n do
if i=j then {elementele de pe diagonala principala}
s1:=s1+a[i,j];
writeln('Suma =',s1);
{2. produsul elementelor aflate pe diagonala secundara}
p1:=1;
1

{parcurgem matricea pe diagonala secundara}


for i:=1 to n do
for j:=1 to n do
if i=n-j+1 then {elementele de pe diagonala secundara}
p1:=p1*a[i,j];
writeln('Produs=',p1);
{3. anulati elementele aflate sub diagonala principala}
{parcurgem matricea sub diagonala principala}
for i:=1 to n do
for j:=1 to n do
if i>j then {elementele de sub diagonala pricipala}
a[i,j]:=0;
afisare(a,n,n); {afisam matricea dupa anularea elementelor}
{4. afisati elementl maxim de sub diagonala secundara}
max:=-32000;
for i:=2 to n do
for j:=n-i+2 to n do
if a[i,j]>max then
max:=a[i,j];
writeln('Max=',max);
{5. adunati 5 pentru elementele aflate deasupra diagonalei secundare}
for i:=1 to n-1 do
for j:=1 to n-i do
a[i,j]:=a[i,j]+5;
afisare(a,n,n);
end;
{programul principal}
begin
read(m,n);
constructie_matrice(a,m,n); afisare(a,m,n); aplicatii(a,n);
end.

You might also like