Отсортировать положительные элементы столбца матрицы по убыванию - Turbo Pascal
Формулировка задачи:
Здравствуйте! Прошу помощи. Прошу подправить код. Не совсем корректно выводит. Вот задание.Среди столбцов заданной целочисленной матрицы, содержащих ТОЛЬКО такие элементы, которые по модулю не больше числа Р, найти столбец с минимальной суммой элементов
Отсортировать положительные элементы этого столбца по убыванию.
Решение задачи: «Отсортировать положительные элементы столбца матрицы по убыванию»
textual
Листинг программы
program zd;
const n = 5;
var a: array[1..n, 1..n] of integer;
i, j, k, s, p, sum: integer;
flag: boolean;
begin
randomize;
for i := 1 to n do
begin
for j := 1 to n do
begin
a[i, j] :=integer(random(15))-2;
write(a[i, j],' ');
end;
writeln;
end;
writeln('Vvedite chislo P');readln(p);
Writeln('Znacheniya summy stolbtsov');
k := 0;s:=maxint;
for j := 1 to n do
begin
sum := 0;flag := true;
for i := 1 to n do
begin
flag := (abs(a[i, j]) <= p) and flag;
if flag then sum := sum + a[i, j];
end;
if flag and (s > sum) then
begin
write(sum, ' ');
k := j;s := sum;
end
else write(' - ');
end;
writeln;
s := 1;
if k = 0 then writeln('Net takih stolbcov.') else
begin
writeln('Nomer stolbtsa s minimalnoi summoi: ', k);
for j:= 1 to n do
for i := j to n do
begin
if (a[j, k] > 0) and (a[i, k] > 0)and (a[j, k] > a[i, k])then
begin
p := a[i, k];
a[i, k] := a[j, k];
a[j, k] := p;
s := i;
end;
end;
end;
writeln;
for i := 1 to n do
begin
for j := 1 to n do
write(a[i, j]:4);
writeln;
end;
end.