Найти минимальный и максимальный элементы в каждом блоке матрицы размера n x n и заменить их на -7 и 7 соответственно
Категория: Delphi/Pascal
2011-08-26 22:03:22
Задана квадратная матрица порядка 2n. Найти минимальный и максимальный элементы в каждом блоке матрицы размера n x n и заменить их на -7 и 7 соответственно. Вывести на печать блок, в котором эти числа стоят ближе друг к другу, чем в других блоках матрицы.
code: #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.
Поделиться: