Дана целочисленная матрица размера M x N. Найти элемент, являющийся максимальным в своей строке и минимальным в своем столбце. Если такой элемент отсутствует, то вывести 0 — Pascal(Паскаль)

uses
  Crt;
type Matr = array[1..100,1..100] of integer;
var A:Matr;
    n:integer;
    yes:Boolean;
    row,col:Integer;
    i,j:Integer;
    s1,s2,s3,s4:Integer;
    op:Integer;
    op2:Char;
    f:Text;
 
{ввод случайный}
procedure inputR(var b:matr;var m:integer);
var i,j:integer;
begin
  for i :=1 to m do
  for j:= 1 to m do
    b[i,j]:=random(50);
end;
 
{ввод ручной}
procedure inputH(var b:matr;var m:integer);
var i,j:integer;
begin
  for i :=1 to m do
  for j:= 1 to m do
    begin
      writeln('input element[',i,j,']');
      readln(b[i,j])
    end;
end;
 
{вывод на экран}
procedure output(var b:matr;var m:integer);
var i,j:integer;
begin
  for i :=1 to m do
    begin
    for j:= 1 to m do
      write(b[i,j]:4);
    writeln;
    end;
end;
 
{Вывод в файл}
procedure outputMF(var b:matr;var m:integer;filename:string);
var i,j:integer;
    f:text;
begin
  assign(f,filename);
  rewrite(f);
    writeln(f,'Initial matrix');
  Writeln(f,'----------------');
  for i :=1 to m do
    begin
      for j:= 1 to m do
        write(f,b[i,j]:4);
      writeln(f);
    end;
    Writeln(f,'----------------');
  close(f);
end;
 
{поиск элемента одновременно максимального в строке и минимального в столбце}
procedure FindPoints(var b:matr;var r,c:Integer; var f:boolean);
var
 i,j:integer;
 k:integer;
 max,min:integer;
begin
  f:=false;
  for i:=1 to n do
    begin
      min := 1;
      for j:=1 to N do
        if a[i,j]>a[i,min] then min := j;
      max := 1;
      for k:=1 to n do
        if a[k,min]<a[max,min] then max := k;
      if max = i then begin
        f:=True;
        r:=max;
        c:=min;
      end;
    end;
    Writeln('b[',r,c,']=',b[r,c]);
end;
 
{основная программа}
begin
  Randomize;{// запуск генератора случайных чисел}
  s1:=0; {инициализация переменных}
  s2:=0;
  s3:=0;
  s4:=0;
  {ввод размерности матрицы}
  Writeln('Input dimension of matrix n=');
  Readln(n); {// ввод размерности матрицы}
  {выбор ввода элементов матрицы}
  Writeln('choose the input method:');
  Writeln('1-Hand');{ввод ручной}
  Writeln('2-Random'); {ввод случайных чисел}
  Readln(op);
  case op of
    1: inputH(a,n);{//ввод ручной }
  else
       inputR(a,n); {// ввод случайных чисел}
  end;
  clrscr;
 {вывод элементов матрицы на экран}
  writeln('Initial matrix');
  Writeln('----------------');
  output(a,n); {// вывод элементов матрицы на экран}
  Writeln('----------------');
  {поиск элемента по условию}
  FindPoints(a,row,col,yes);
  readln;
  end.

Leave a Comment

5 + 3 =