Есть код программы (Паскаль). Напишите этот же код используя процедуры.

Ольга в категроии Информатика, вопрос открыт 29.11.2017 в 20:58

Условие: Элемент матрицы назовем седловой точкой, если он является наименьшим в строке и одновременно наибольшим в своем столбце или, наоборот, является наибольшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером NxM напечатать индексы всех её седловых точек. Заменить эти числа так, чтобы заданные условия не выполнялись.
Программа:
Const
n = 4;
m = 6;

var
a: array[1..n, 1..m] of integer; // основной массив
Rext: array[1..n, 1..2] of integer; // номера столбцов с min и max в строках
Cext: array[1..2, 1..m] of integer; // номера строк с min и max в столбцах
i, j, amin, amax: integer;

begin
// заполняем массив А случайными числами
Randomize;
writeln('Исходный массив');
for i := 1 to n do
begin
for j := 1 to m do
begin
a[i, j] := random(100) - 50;
write(a[i, j]:4);
end;
writeln;
end;
// Заполняем массив Rext n x 2
for i := 1 to n do
begin
amin := 10000; //заведомо больше a[i,j]
amax := -10000; //заведомо меньше a[i,j]
for j := 1 to m do
begin
if amin > a[i, j] then begin
amin := a[i, j]; Rext[i, 1] := j
end;
if amax < a[i, j] then begin
amax := a[i, j]; Rext[i, 2] := j
end
end;
end;
// Заполняем массив Cext 2 x m
for j := 1 to m do
begin
amin := 10000; //заведомо больше a[i,j]
amax := -10000; //заведомо меньше a[i,j]
for i := 1 to n do
begin
if amin > a[i, j] then begin
amin := a[i, j]; Cext[1, j] := i
end;
if amax < a[i, j] then begin
amax := a[i, j]; Cext[2, j] := i
end
end
end;
writeln;
// Ищем седловые точки
writeln('*** Седловые точки ***');
for i := 1 to n do
begin
j := Rext[i, 1];
if Cext[2, j] = i then
write('[', i, ',', j, '] ')
else begin
j := Rext[i, 2];
if Cext[1, j] = i then
write('[', i, ',', j, '] ')
end
end;
writeln
end.

0 ответов

Нет результатов.
Оставлять ответы могут только авторизированные пользователи.
Зарегистрируйтесь или  авторизируйтесь на сайте чтобы оставить ответ на вопрос.