uses crt;
type arr = array[1..50, 1..50] of integer;
var a:arr; i,j,n:integer; s,p:longint;
function summ(a:arr; n:integer):longint;
var i,j:integer; s:longint;
begin
s := 0;
for i:=1 to n do for j := i+1 to n do s := s + a[i,j];
summ := s;
end;
function proiz(a:arr; n:integer):longint;
var i,j:integer; p:longint;
begin
p := 1;
for i:=1 to n do for j := 1 to i-1 do p := p * a[i,j];
proiz := p;
end;
begin
clrscr;
write('Введите размерность -> ');
readln(n);
for i:=1 to n do for j:=1 to n do
begin
write('M[',i,',',j,'] -> ');
readln(a[i,j]);
end;
writeln('Исходная матрица');
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
p := proiz(a, n);
s := summ(a, n);
writeln('Произведение элементов матрицы под главной диагональю = ',p);
writeln('Cуммf элементов над главной диагональю = ',s);
readln;
end.
Следующий вариант
uses crt;
const nmax=20;
type matr=array[1..nmax,1..nmax] of real;
function Proiz(m:matr;n:byte):real;
var i,j:byte;
p:real;
begin
p:=1;
for i:=2 to n do
for j:=1 to i-1 do
p:=p*m[i,j];
Proiz:=p;
end;
function Summ(m:matr;n:byte):real;
var i,j:byte;
s:real;
begin
s:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
s:=s+m[i,j];
Summ:=s;
end;
var a:matr;
n,i,j:byte;
begin
clrscr;
randomize;
repeat
write('Размер матрицы до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=5*random;
write(a[i,j]:5:2);
end;
writeln;
end;
writeln;
writeln('Произведение под главной диагональю=',Proiz(a,n):0:2);
writeln('Сумма над главной диагональю=',Summ(a,n):0:2);
readln
end.