Найти минимальный и максимальный элементы в каждом блоке матрицы размера n x n и заменить их на -7 и 7 соответственно

Задана квадратная матрица порядка 2n. Найти минимальный и максимальный элементы в каждом блоке матрицы размера n x n и заменить их на -7 и 7 соответственно. Вывести на печать блок, в котором эти числа стоят ближе друг к другу, чем в других блоках матрицы.

code: #pascal
  1. const
  2.  n = 3;
  3.  
  4. type
  5.   MyRec = record
  6.    i,min,max: integer;
  7.   end;
  8.  
  9. var
  10.  i,j: integer;
  11.  f: text;
  12.  min,max: integer;
  13.  tr: MyRec;
  14.  arr: array[1..n,1..n] of integer;
  15.  
  16. procedure ReadData;
  17. begin
  18.  for i:=1 to n do
  19.   for j:=1 to n do
  20.   begin
  21.    Write('Введите значение элемента #',(i-1)*n+j);
  22.    Readln(arr[i,j]);
  23.   end;
  24. end;
  25.  
  26. procedure ChangeIt;
  27. begin
  28.  min:=1;
  29.  max:=1;
  30.  for i:=1 to n do
  31.  begin
  32.   if i>1 then
  33.   begin
  34.    arr[i-1,min]:=-7;
  35.    arr[i-1,max]:=7;
  36.   end;
  37.   if i=2 then
  38.   begin
  39.    tr.i:=1;
  40.    tr.max:=max;
  41.    tr.min:=min;
  42.   end else if (i>2)and(Abs(tr.max-tr.min)>Abs(max-min)) then
  43.   begin
  44.    tr.i:=i-1;
  45.    tr.max:=max;
  46.    tr.min:=min;
  47.   end;
  48.   for j:=1 to n do
  49.   begin
  50.    if arr[i,min]>arr[i,j] then min:=j;
  51.    if arr[i,max][i,j] then max:=j;
  52.   end;
  53.  end;
  54.  arr[i,min]:=-7;
  55.  arr[i,max]:=7;
  56.  if (Abs(tr.max-tr.min)>Abs(max-min)) then
  57.  begin
  58.   tr.i:=i;
  59.   tr.max:=max;
  60.   tr.min:=min;
  61.  end;
  62. end;
  63.  
  64. procedure WriteResult;
  65. begin
  66.  Assign(f,'PRN');
  67.  ReWrite(f);
  68.  for j:=1 to n do Writeln(f,arr[tr.i,j]);
  69.  Close(f);
  70.  Writeln('Результат готов');
  71.  Readln;
  72. end;
  73.  
  74. begin
  75.  ReadData;
  76.  ChangeIt;
  77.  WriteResult;
  78. end.
Поделиться:

Похожие статьи: