maxminst.PAS

{* Максимальный элемента среди минимальных элементов столбцов *}

Unit MAXMINST;
Interface
Implementation
Begin
 writeln('Максимальный элемента среди минимальных элементов столбцов в матрице из n строк и m столбцов.');
End.

Program maxmin;

Uses maxminst.pas; {* Эту строку можно удалить *}
Const {* Постоянные значения *}
  n = 4;
  m = 5;
Var {* Объявление переменных *}
  matrix : Array[1..n, 1..m] Of integer;
  max    : integer;
  min    : integer;
  i      : integer;
  j      : integer;
Begin
  randomize;
  For i := 1 To n Do {* Цикл для i => [1 .. n] *}
  Begin
    For j := 1 To m Do {* Переменная j увеличивается с 1 до m *}
    Begin
      matrix[i, j] := random(100);
      write(matrix[i, j] : 3);
    End;
    writeln; {* Вывод пустой строки *}
  End;
  max := 0; {максимум среди минимумов}
  For j := 1 To m Do {* Цикл для j => [1 .. m] *}
  Begin
    min := matrix[1, j]; {предполагаем, что первый в столбце минимален}
    For i := 2 To n Do {просматриваем столбец построчно}
      If matrix[i, j] < min Then
        min := matrix[i, j]; {замена минимума}
    If min > max Then
      max := min {замена максимума}
  End;
  writeln(max);
  readln
End.