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

const
 n = 3;
 
type
  MyRec = record
   i,min,max: integer;
  end;
 
var
 i,j: integer;
 f: text;
 min,max: integer;
 tr: MyRec;
 arr: array[1..n,1..n] of integer;
 
procedure ReadData;
begin
 for i:=1 to n do
  for j:=1 to n do
  begin
   Write('Введите значение элемента #',(i-1)*n+j);
   Readln(arr[i,j]);
  end;
end;
 
procedure ChangeIt;
begin
 min:=1;
 max:=1;
 for i:=1 to n do
 begin
  if i>1 then
  begin
   arr[i-1,min]:=-7;
   arr[i-1,max]:=7;
  end;
  if i=2 then
  begin
   tr.i:=1;
   tr.max:=max;
   tr.min:=min;
  end else if (i>2)and(Abs(tr.max-tr.min)>Abs(max-min)) then
  begin
   tr.i:=i-1;
   tr.max:=max;
   tr.min:=min;
  end;
  for j:=1 to n do
  begin
   if arr[i,min]>arr[i,j] then min:=j;
   if arr[i,max][i,j] then max:=j;
  end;
 end;
 arr[i,min]:=-7;
 arr[i,max]:=7;
 if (Abs(tr.max-tr.min)>Abs(max-min)) then
 begin
  tr.i:=i;
  tr.max:=max;
  tr.min:=min;
 end;
end;
 
procedure WriteResult;
begin
 Assign(f,'PRN');
 ReWrite(f);
 for j:=1 to n do Writeln(f,arr[tr.i,j]);
 Close(f);
 Writeln('Результат готов');
 Readln;
end;
 
begin
 ReadData;
 ChangeIt;
 WriteResult;
end.

Leave a Comment

− 2 = 4