{Файл: prog63_13.pas Задача: Дана целочисленная прямоугольная матрица m*n, заполненная случайными числами. Найти и указать индексы всех седловых точек матрицы. Указание: элемент матрицы называется седловой точкой, если он является наименьшим в строке и наибольшим в столбце, либо , наоборот-наибольшим в строке и наименьшим в столбце. Автор: Дата: 03,11,2015} const m = 5; {y} n = 5; {x} type doblmasiv = array [1..m, 1..n] of integer; ymasiv = array [1..m] of integer; xmasiv = array [1..n] of integer; var a: doblmasiv; xmax : xmasiv; xmin : xmasiv; ymax : ymasiv; ymin : ymasiv; i, j, k : integer; begin {Заполнение матрицы случайными числами} randomize; for i:=1 to m do for j:= 1 to n do //readln (a[i , j]); //ввод вручную a[i, j]:=random(100); //рандом {Вывод матрицы на экран} writeln ('Исходная матрица:'); for i:=1 to m do begin for j:=1 to n do write(a[i, j]:4); writeln; end; {вычисление максимумов и минимумов} j:=0; for i:=1 to m do begin ymin[i]:= a[i, 1]; ymax[i]:= a[i, 1]; for j:= 1 to n do begin xmin[j]:= a[1, j]; xmax[j]:= a[1, j]; {заполнения масивов ymax, ymin} if a[i, j]ymax [i] then ymax[i]:=a[i, j]; for k:= 1 to m do begin {заполнение массивов xmax, xmin} if a[k, j]xmax [j] then xmax[j]:=a[k, j]; end; end; end; {заполнение x массива} {for i:=1 to m do begin ymin[i]:= a[i, 1]; ymax[i]:= a[i, 1]; for j:= 2 to n do begin if a[i, j]ymax [i] then ymax[i]:=a[i, j]; end; end;} {заполнение y массива} { for j:=1 to m do begin xmin[j]:= a[1, j]; xmax[j]:= a[1, j]; for i:= 2 to n do begin if a[i, j]xmax [j] then xmax[j]:=a[i, j]; end; end;} {нахождения и вывод седловых точек} writeln('индексы седловых точек'); for i:=1 to m do for j:= 1 to n do if ((a[i,j]=xmin[j]) and (a[i,j]=ymax[i])) or ((a[i,j]=xmax[j])and(a[i,j]=ymin[i])) then writeln ('i = ',i,' j = ', j); end.