obmen.PAS

{* Замена в двумерном массиве *}

Unit OBMEN;
Interface
Implementation
Begin
 writeln('Программа на двумерный массив, Вы вводите количество строк и столбцов, а программа выводит Вам массив, в котором показывает наименьшее (min) и наибольшее значение (max). А затем меняет их местами: там где находилось наименьшее размещается наибольшее и наоборот.

'
);
End.

Program OBMEN;

Uses obmen.pas; {* Эту строку можно удалить *}
Uses crt; {* Подключаем внешние файлы *}
Var {* В работе нам потребуются переменные: *}
  p   : integer;
  m   : integer;
  n   : integer;
  i   : integer;
  j   : integer;
  max : integer;
  min : integer;
  i1  : integer;
  j1  : integer;
  i2  : integer;
  j2  : integer;
  x   : integer;
  a   : Array[1..100, 1..100] Of integer;
Begin
  1 :  clrscr; {* Очистка экрана *}
  Writeln('ВВЕДИТЕ КОЛЛИЧЕСТВО СТРОК');
  read(m);
  Writeln('ВВЕДИТЕ КОЛЛИЧЕСТВО СТОЛБЦОВ');
  readln(n);
  randomize;
  Begin
    For i := 1 To m Do {* Переменная i увеличивается с 1 до m *}
      For j := 1 To n Do {* Переменная j увеличивается с 1 до n *}
        a[i, j] := random(500);
    max := a[1, 1];
    For i := 1 To m Do {* Увеличиваем i от 1 до m с шагом 1 *}
      For j := 1 To n Do {* Переменная j увеличивается с 1 до n *}
        If a[i, j] > max Then
        Begin
          max := a[i, j];
          i1 := i;
          j1 := j;
        End;
    Writeln; {* Пропускаем одну строку *}
    writeln('МАКСИМАЛЬНЫЙ ЭЛЕМЕНТ ', max, ' ', i1, ' ', j1);
    min := a[1, 1];
    For i := 1 To m Do {* Цикл для i => [1 .. m] *}
      For j := 1 To n Do {* Увеличиваем j от 1 до n с шагом 1 *}
        If a[i, j] < min Then
        Begin
          min := a[i, j];
          i2 := i;
          j2 := j;
        End;
    Writeln; {* Пустая строка *}
    Writeln('МИНИМАЛЬНЫЙ ЭЛЕМЕНТ ', min, ' ', i2, ' ', j2);
    writeln; {* Вывод пустой строки *}
    writeln; {* Пустая строка *}
    For i := 1 To m Do {* Цикл для i => [1 .. m] *}
    Begin
      For j := 1 To n Do {* Переменная j увеличивается с 1 до n *}
        write(' ', a[i, j] : 3);
      writeln; {* Вывод пустой строки *}
    End;
    writeln; {* Вывод пустой строки *}
    writeln; {* Пустая строка *}
    Writeln('   ЗАМЕНА:');
    writeln; {* Пропускаем одну строку *}
    x := a[i1, j1];
    a[i1, j1] := a[i2, j2];
    a[i2, j2] := x;
    For i := 1 To m Do {* Цикл для i => [1 .. m] *}
    Begin
      For j := 1 To n Do {* Цикл для j => [1 .. n] *}
        write(' ', a[i, j] : 3);
      writeln; {* Пропускаем одну строку *}
    End;
    writeln ('ВЫХОД - 1, НАЧАТЬ ЗАНОВО - 2');
    readln(p);
    If (p = 1) Then
      exit
    Else Goto 1;
  End;
  
End.