Решить уравнение c/n+b/l=a/m, где l,c – количество и сумма отрицательных элементов матрицы d(8,8) , расположенных выше главной диагонали;n,a – количество и сумма отрицательных элементов матрицы t(10,10) , расположенных выше главной диагонали;m,b – количество и сумма отрицательных элементов матрицыq(7,7) , расположенных выше главной диагонали. Знакопеременные массивы сформировать случайным образом. на языке паскаль.
type matrix = array[1..N, 1..N] of integer; vector = array[1..N] of integer;
procedure fillRandomArray(var a: vector); var i: integer; begin for i := 1 to N do a[i] := random(100) - 50; end;
procedure fillRandomMatrix(var a: matrix); var i, j: integer; begin for i := 1 to N do for j := 1 to N do a[i, j] := random(100) - 50; end;
function countNegativesAboveDiagonal(a: matrix): integer; var i, j, count: integer; begin count := 0; for i := 1 to N do for j := i + 1 to N do if a[i, j] < 0 then count := count + 1; countNegativesAboveDiagonal := count; end;
function sumNegativesAboveDiagonal(a: matrix): integer; var i, j, sum: integer; begin sum := 0; for i := 1 to N do for j := i + 1 to N do if a[i, j] < 0 then sum := sum + a[i, j]; sumNegativesAboveDiagonal := sum; end;
var d: matrix; t, q: matrix; l, c, n, a, m, b: integer;
program negative_elements;
const
N = 8;
M = 10;
K = 7;
type
matrix = array[1..N, 1..N] of integer;
vector = array[1..N] of integer;
procedure fillRandomArray(var a: vector);
var
i: integer;
begin
for i := 1 to N do
a[i] := random(100) - 50;
end;
procedure fillRandomMatrix(var a: matrix);
var
i, j: integer;
begin
for i := 1 to N do
for j := 1 to N do
a[i, j] := random(100) - 50;
end;
function countNegativesAboveDiagonal(a: matrix): integer;
var
i, j, count: integer;
begin
count := 0;
for i := 1 to N do
for j := i + 1 to N do
if a[i, j] < 0 then
count := count + 1;
countNegativesAboveDiagonal := count;
end;
function sumNegativesAboveDiagonal(a: matrix): integer;
var
i, j, sum: integer;
begin
sum := 0;
for i := 1 to N do
for j := i + 1 to N do
if a[i, j] < 0 then
sum := sum + a[i, j];
sumNegativesAboveDiagonal := sum;
end;
var
d: matrix;
t, q: matrix;
l, c, n, a, m, b: integer;
begin
randomize;
fillRandomMatrix(d);
fillRandomMatrix(t);
fillRandomMatrix(q);
l := countNegativesAboveDiagonal(d);
c := sumNegativesAboveDiagonal(d);
n := countNegativesAboveDiagonal(t);
a := sumNegativesAboveDiagonal(t);
m := countNegativesAboveDiagonal(q);
b := sumNegativesAboveDiagonal(q);
if n <> 0 then
writeln('Solution: ', c/n + b/l:0:2, ' = ', a/m);
end.