Дана матрица а[1: 4; 1: 4] а) получить сумму и количество четных элементов в интервале [-10 +5]. б) сформировать вектор из сумм элементов матрицы по столбцам в) получить среднеарифметическое значение положительных элементов матрицы. г) получить произведение и сумму элементов в третьем столбце.
// Внимание! Если программа не работает, обновите версию!
begin
Writeln('*** Исходная матрица ***');
var a:=MatrRandom(4,4,-99,99);
a.Println(4); Writeln(4*a.ColCount*'-');
var s:=a.ElementsByRow.Where(t->t.Between(-10,5) and t.IsEven);
Writeln('На интервале [-10;5] четных элементов ',s.Count,
', их сумма равна ',s.Sum);
var vc:=a.Cols.Select(t->t.Sum);
Write('Вектор сумм по столбцам: '); vc.Println;
Writeln('Среднее арифметическое положительных равно: ',
a.ElementsByRow.Where(t->t>0).Average);
Writeln('В третьем столбце сумма элементов равна ',
a.Col(2).Sum,', произведение равно ',
a.Col(2).Aggregate(1,(p,q)->p*q))
end.
Пример
*** Исходная матрица ***
27 -87 73 -6
48 -50 75 -32
4 92 -84 85
27 4 31 -63
----------------
На интервале [-10;5] четных элементов 3, их сумма равна 2
Вектор сумм по столбцам: 106 -41 95 -16
Среднее арифметическое положительных равно: 46.6
В третьем столбце сумма элементов равна 95, произведение равно -14256900
A: array [1..4, 1..4] of integer;
B: array [1..4] of integer;
i, j, Count, CountAr: byte;
ArithMean: real;
Sum, Mult, SumThird: integer;
begin
Mult := 1;
randomize;
writeln(' *** Исходный массив ***');
for i := 1 to 4 do
begin
for j := 1 to 4 do
begin
//Случайные значение в диапазоне [-30;30]
A[i, j] := random(61)-30;
//Сумма и количество четных в диапазоне [-10..5]
if (A[i, j] mod 2 = 0) and ((A[i, j] >= -10) and (A[i, j] <= 5)) then
begin
Sum := Sum + A[i, j];
Count := Count + 1;
end;
//Количество и сумма положительных для среднего арифметического
if A[i, j] > 0 then
begin
CountAr := CountAr + 1;
ArithMean := ArithMean + A[i, j];
end;
//Произведение и сумма 3-его столбца
if j = 3 then
begin
Mult := Mult * A[i, j];
SumThird := SumThird + A[i, j];
end;
write(A[i, j]:5);
end;
writeln;
end;
writeln('Количество четных [-10..5] = ', Count);
writeln('Сумма четных [-10..5] = ', Sum);
writeln('Среднее арифметическое = ', (ArithMean/CountAr):0:2);
writeln('Произведение в 3 столбце = ', Mult);
writeln('Сумма в 3 столбце = ', SumThird);
//Получение вектора
for j := 1 to 4 do
begin
Sum := 0;
for i := 1 to 4 do
Sum := Sum + A[i, j];
B[j] := Sum;
end;
writeln('Вектор:');
for i := 1 to 4 do
writeln(B[i]:5);
end.