Определить сумму всех элементов двумерной матрицы и переставить строки - Pascal ABC
Формулировка задачи:
Всем привет! Какой алгоритм решения задания: "Дана матрица А(m, n), 1<(m, n)<10. Определить сумму всех элементов матрицы. Переставить строки по возрастанию количества положительных элементов в строках." ? Я вообще не могу что-то вдуплить, как и каким образом. Заранее спасибо)
Решение задачи: «Определить сумму всех элементов двумерной матрицы и переставить строки»
textual
Листинг программы
const nmax=10;
var a:array[1..nmax,1..nmax+1] of integer;
n,m,i,j,k,s:integer;
begin
randomize;
repeat
write('Количество строк от 2 до ',nmax,' m=');
readln(m);
until m in [2..nmax];
repeat
write('Количество столбцов от 2 до ',nmax,' n=');
readln(n);
until n in [2..nmax];
//вычисление суммы и кол. полож. в строках, запись их в дополнительный столбец
s:=0;
for i:=1 to m do
begin
k:=0;
for j:=1 to n do
begin
a[i,j]:=-10+random(21);
s:=s+a[i,j];
if a[i,j]>0 then k:=k+1;
end;
a[i,n+1]:=k;
end;
writeln('Исходный массив:');
writeln('Кол. полож.':(n*4+12));
for i:=1 to m do
begin
for j:=1 to n+1 do
if j=n+1 then write(a[i,j]:6)
else write(a[i,j]:4);
writeln;
end;
writeln('Сумма всех элементов=',s);
//перестановка строк по возрастанию кол. полож. (по последнему столбцу)
for i:=1 to m-1 do
for k:=i+1 to m do
if a[i,n+1]>a[k,n+1] then
for j:=1 to n+1 do
begin
s:=a[i,j];
a[i,j]:=a[k,j];
a[k,j]:=s;
end;
writeln('Строки по возрастанию количества положительных элементов в них:');
writeln('Кол.полож.':(n*4+12));
for i:=1 to m do
begin
for j:=1 to n+1 do
if j=n+1 then write(a[i,j]:6)
else write(a[i,j]:4);
writeln;
end;
end.