Переставляя строки и столбцы, добиться того чтобы наибольший элемент оказался в верхнем левом углу - Pascal
Формулировка задачи:
Дана вещественная матрица размером 7x4. Переставляя её строки и столбцы , добиться того чтобы наибольший элемент (один из них) оказался в верхнем левом углу. Помогите решить пожалуйста!!!!
Решение задачи: «Переставляя строки и столбцы, добиться того чтобы наибольший элемент оказался в верхнем левом углу»
textual
Листинг программы
const m=7; n=4;
var
a: array [1..m,1..n] of Real;
i, j, mi, mj: Integer;
t: Real;
begin
Randomize;
for i:=1 to m do for j:=1 to n do a[i,j]:=-50+100*Random;
WriteLn('A =');
for i:=1 to m do begin for j:=1 to n do Write(' ',a[i,j]:7:2); WriteLn; end;
mi:=1; mj:=1;
for i:=1 to m do for j:=1 to n do if a[mi,mj]<a[i,j] then begin mi:=i; mj:=j; end;
if mi<>1 then for j:=1 to n do begin t:=a[1,j]; a[1,j]:=a[mi,j]; a[mi,j]:=t; end;
if mj<>1 then for i:=1 to m do begin t:=a[i,1]; a[i,1]:=a[i,mj]; a[i,mj]:=t; end;
WriteLn('A''=');
for i:=1 to m do begin for j:=1 to n do Write(' ',a[i,j]:7:2); WriteLn; end;
end.
Объяснение кода листинга программы
- Объявляется переменная
mсо значением 7 и переменнаяnс значением 4. - Объявляется массив
aразмером 7x4 для хранения вещественных чисел. - Объявляются переменные
i,j,mi,mjдля циклов и операций с массивом и переменнаяtдля временного хранения значений. - Генерируются случайные числа и заполняется массив
aслучайными значениями в диапазоне от -50 до 50. - Выводится на экран заполненный массив
aв виде матрицы. - Находится индекс максимального элемента в массиве
a(индексы сохраняются в переменныхmiиmj). - Если индекс максимального элемента не равен (1,1), то происходит перестановка строк и/или столбцов массива таким образом, чтобы максимальный элемент находился в верхнем левом углу.
- Выводится на экран изменённый массив
aв виде матрицы.