Матрица А имеет седловую точку Aij, если Aij является минимальным элементом в i-ой строке и максимальным в j-ом столбце
Категория: Delphi/Pascal
2012-01-06 19:21:30
Дана целочисленная прямоугольная матрица. Определить количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент, а также номера строк и столбцов всех 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.
Поделиться: