Дана матрица размером m*n, переставляя ее строки и столбцы добиться того, чтобы наибольший элемент оказался в верхнем левом углу — Pascal(Паскаль)

Примечания:
— все программы с массивами должны содержать отдельные подпрограммы для ввода (и, если требуется, то и для вывода) данных. Использование глобальных переменных недопустимо.
— Значение размерности массивов описывается константами.

uses crt;
Const m=3;n=4;
Type Matrica=array[1..m,1..n] of integer;
var  Mas:Matrica;

Procedure Vvod(var Massiv:Matrica);
var i,j:integer;
begin
 for i:=1 to m do
  for j:=1 to n do
   begin
    write('Введите ',i,j,' элемент: ');
    readln(Massiv[i,j]);
   end;

writeln('Начальная матрица: ');
 for i:=1 to m do
  begin
    write('|');
    for j:=1 to n do
     write(Massiv[i,j],' ');
    writeln('|');
  end;

end;

Procedure Sortirovka(var Massiv:Matrica);
var stroka,stolbec,max,i,j:integer;
    masStolbec:array[1..m] of integer; {Столбец с мах элементом}
    masStroka:array[1..n] of integer;   {Строка с мах элементом}
begin
max:=Massiv[1,1];
stroka:=1;
stolbec:=1;
 for i:=1 to m do
  for j:=1 to n do
    if Massiv[i,j]>max then
      begin
       max:=Massiv[i,j];
       stroka:=i;  {Столбец в котором находится мах элемент}
       stolbec:=j;  {Строка в котором находится мах элемент}
      end;

{=======================Сортировка по столбцам===============================}

If stolbec<>1 then
  begin
  for i:=1 to m do
    masStolbec[i]:=Massiv[i,stolbec]; {Запоминаем столбец с мах элементом}



 for i:=stolbec downto 2 do  {Сдвигаем столбцы}
   for j:=1 to m do
     Massiv[j,i]:=Massiv[j,i-1];


 for i:=1 to m do {Первому столбцу присваиваем знач. столбца с мах элементом}
  Massiv[i,1]:=masStolbec[i];

 end; {if}

{=========================Сортировка по строкам==============================}

if stroka<>1 then
begin

 for i:=1 to n do               {Запоминаем стороку с мах элементом}
  masStroka[i]:=Massiv[stroka,i];

 for i:=stroka downto 2 do   {Сдвигаем строки}
  for j:=1 to n do
   Massiv[i,j]:=Massiv[i-1,j];

 for i:=1 to n do     {Первой стороке присваиваем знач. строки с мах элемен.}
  Massiv[1,i]:=masStroka[i];


end; {if}

{============================================================================}

end;

Procedure Vivod(Massiv:Matrica);
var i,j:integer;
begin
writeln('Итоговая матрица: ');
 for i:=1 to m do
  begin
    write('|');
    for j:=1 to n do
     write(Massiv[i,j],' ');
    writeln('|');
  end;

end;



begin
clrscr;
Vvod(Mas); {Ввод матрицы}
sortirovka(Mas);  {Сортировка}
Vivod(Mas);  {Вывод матрицы}
readln;
end.

Leave a Comment

− 1 = 2