Матрица А имеет седловую точку Aij, если Aij является минимальным элементом в i-ой строке и максимальным в j-ом столбце

Дана целочисленная прямоугольная матрица. Определить количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент, а также номера строк и столбцов всех cедловых точек матрицы.

code: #pascal
program PascalGuru;
var A:array[1..50,1..50] of integer; {переменная массива}
    MIN:array[1..50] of integer; {переменная МАССИВА минимальных элементов в i-ой строке}
    MAX:array[1..50] of integer; {переменная МАССИВА максимальных элементов в j-ом столбце}
    i,j,n,kol:integer; {переменные для циклов}
    b:boolean;   {логическая переменная}
 
begin
write ('Vvedite razmer matricy A: ');
readln (n);     {ввод размера матрицы}
 
for i:=1 to n do
for j:=1 to n do begin
write ('A[',i,',',j,']='); readln (A[i,j]); end; {ввод элементов матрицы}
 
write ('Vot vvedennai vami matrica A: ');
for i:=1 to n do begin writeln;
for j:=1 to n do write (A[i,j]:8); end;  {вывод элементов матрицы на экран}
writeln;writeln;
 
{***1:}
for i:=1 to n do  {цикл пробегает по строке}
    begin
    b:=false;
     for j:=1 to n do
      if A[i,j]=0 then b:=true; {смотрим - есть ли нули в текущ. строке}
 
    kol:=0;  {обнуляем переменную кол-ва}
    if b then {если есть нули в текущ. строке}
     begin
      for j:=1 to n do
       if A[i,j]<0 then inc(kol); { тогда находим кол-во отриц. эл-ов в текущ. строке}
      writeln('Kol-vo v ',i,' stroke: ',kol); {выводим кол-во отриц. эл-ов на экран}
     end;
    end;
writeln;
 
{***2:}
for i:=1 to n do   {начало поиска минимальных элементов в i-ой строке }
    begin
     MIN[i]:=A[i,1];
     for j:=2 to n do
      if A[i,j]<MIN[i] then MIN[i]:=A[i,j];
    end; {---конец поиска минимальных элементов в i-ой строке }
 
for j:=1 to n do {начало поиска максимальных элементов в j-ом столбце}
    begin
     MAX[j]:=A[1,j];
     for i:=2 to n do
      if A[i,j]>MAX[j] then MAX[j]:=A[i,j];
    end; {---конец поиска максимальных элементов в j-ом столбце}
 
for i:=1 to n do {проходим по матрице}
for j:=1 to n do
if MIN[i]=MAX[j] then {находим адреса седловых точек}
  writeln('Sedlovoe cislo: "',MIN[i],'" s adresom: [',i,',',j,']'); {выводим их на экран }
 
readln;
end.      
Поделиться:

Похожие статьи: