Нахождение седловой точки матрицы - Turbo Pascal
Формулировка задачи:
В квадратной матрице определить номера строки и столбца какой-нибудь "седловой" точки. Некоторый элемент массива называется "седловой" точкой, если он является одновременно наименьшим в своей строке и наибольшим в своем столбце.
Желательно чтобы программа была с рандомным массивом и без использования типа "Boolean"
Решение задачи: «Нахождение седловой точки матрицы»
textual
Листинг программы
Uses crt;
Var A:array[1..100,1..100] of integer; n,i,j:integer;
min:array[1..100] of integer; max:array[1..100] of integer;
Begin
ClrScr; Randomize;
Write('n='); Readln(n);{ввод порядка(размера) матрицы}
For i:=1 to n do
Begin
min[i]:=25;
For j:=1 to n do
Begin
A[i,j]:=random(51)-25;
If A[i,j]<min[i] then min[i]:=A[i,j];{находим минимумы в столбцах}
End;
End;
For i:=1 to n do
Begin
max[i]:=0;
For j:=1 to n do
Begin
If A[j,i]>max[i] then max[i]:=A[j,i];{находим максимумы в строках}
End;
End;
For i:=1 to n do
Begin
For j:=1 to n do
Begin
If (A[i,j]=max[i]) and (A[i,j]=min[j]) then TextColor(4) else TextColor(8);{сравниваем минимумы и максимумы, "седловой" элемент будет выделен красным цветом}
Write(A[i,j]:4);
End;
Writeln;
End;
Readln;
End.
Объяснение кода листинга программы
- В начале кода используются библиотеки crt и randomize, необходимые для работы с генератором случайных чисел и вывода информации на экран.
- Переменная n используется для хранения порядка (размера) матрицы, введенного пользователем.
- Создаются два массива min и max, которые будут использоваться для поиска минимальных и максимальных значений в матрице A.
- Заполняются массивы min и max значениями, начиная с 25, используя вложенный цикл for.
- Используется внешний цикл for для перебора строк матрицы A. Для каждой строки выполняется следующий набор действий:
- Инициализируется переменная i, которая будет использоваться для перебора столбцов текущей строки.
- Используется вложенный цикл for для перебора столбцов текущей строки.
- Если значение A[i,j] меньше значения min[i], то обновляется значение min[i] на значение A[i,j].
- Если значение A[i,j] больше значения max[i], то обновляется значение max[i] на значение A[i,j].
- Выводится значение A[i,j] для каждой пары i и j, используя функцию Write.
- После завершения внешнего цикла for, выводится символ новой строки с помощью функции Writeln.
- Конец программы.