Написать программу с использованием подпрограмм для вычисления произведения элементов матрицы под главной диагональю и суммы элементов над главной диагональю — Pascal(Паскаль)

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.

Leave a Comment

− 1 = 6