Дана целочисленная прямоугольная матрица. Определить количество отрицательных элементов в тех строках, которые содержат хотя бы один нулевой элемент, а также номера строк и столбцов всех cедловых точек матрицы. Матрица А имеет седловую точку Aij, если Aij является минимальным элементом в i-ой строке и максимальным в j-ом столбце — 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.

Leave a Comment

4 + 2 =