Составить одномерный массив из средних арифметических значений элементов строк матрицы - Pascal
Формулировка задачи:
Вводятся две вещественные матрицы размером 20х30 и 30х40. Для той матрицы, у которой сумма положительных элементов матрицы меньше, составить одномерный массив из средних арифметических значений элементов строк матрицы и отсортировать его в порядке убывания элементов. Вывести на печать саму матрицу, найденную сумму элементов и oтсортированный одномерный массив.
Решение задачи: «Составить одномерный массив из средних арифметических значений элементов строк матрицы»
textual
Листинг программы
const am=20; an=30; bm=30; bn=40;
var
a: array [1..am,1..an] of Real;
b: array [1..bm,1..bn] of Real;
c: array [1..bm] of Real;
sa, sb, t: Real;
cn, i, j, k: Integer;
begin
Randomize;
for i:=1 to am do for j:=1 to an do a[i,j]:=-10.0+Random*19.99;
for i:=1 to bm do for j:=1 to bn do b[i,j]:=-10.0+Random*19.99;
for i:=1 to an do for j:=1 to an do if a[i,j]>0 then sa:=sa+a[i,j];
for i:=1 to bn do for j:=1 to bn do if b[i,j]>0 then sb:=sb+b[i,j];
if sa<sb then begin cn:=am;
for i:=1 to am do begin
t:=0; for j:=1 to an do t:=t+a[i,j]; c[i]:=t/an;
end;
WriteLn('A =');
for i:=1 to am do begin
for j:=1 to an do Write(a[i,j]:5:1); WriteLn;
end;
WriteLn('SUMp =',sa:0:1);
end else begin cn:=bm;
for i:=1 to bm do begin
t:=0; for j:=1 to bn do t:=t+b[i,j]; c[i]:=t/bn;
end;
WriteLn('B =');
for i:=1 to bm do begin
for j:=1 to bn do Write(b[i,j]:5:1); WriteLn;
end;
WriteLn('SUMp =',sb:0:1);
end;
i:=cn;
repeat
k:=1;
for j:=1 to i-1 do
if c[j+1]>c[j] then begin
k:=j; t:=c[j+1]; c[j+1]:=c[j]; c[j]:=t;
end;
i:=k;
until k=1;
WriteLn('C ='); for j:=1 to cn do Write(c[j]:5:1); WriteLn;
end.
Объяснение кода листинга программы
- Объявляются константы
am(значение 20) иan(значение 30) для размеров массиваa, а также константыbm(значение 30) иbn(значение 40) для массиваb. - Объявляются переменные:
a- массив размером 20x30b- массив размером 30x40c- массив размером 30sa,sb,t- вещественные числаcn,i,j,k- целые числа
- Генерируются случайные значения и заполняется массив
aслучайными вещественными числами от -10.0 до 9.99. - Аналогично заполняется массив
b. - Вычисляется сумма положительных элементов массива
aиbи присваивается переменнымsaиsbсоответственно. - Сравниваются суммы
saиsb, выбирается массив с наибольшей суммой положительных элементов. - Если
sa<sb, то для каждой строки массиваавычисляется среднее арифметическоеanэлементов, и результат сохраняется в массивеc. Затем выводится массиваи его сумма положительных значений. - Если
sa≥sb, то для каждой строки массиваbвычисляется среднее арифметическоеbnэлементов и сохраняется в массивеc. Затем выводится массивbи его сумма положительных значений. - Сортируется массив
cв порядке убывания. - Выводится отсортированный массив
c.