Матрица MxN, вставка строки в массив


Задача:

  Вставить первую строку после строки, в которой находится первый встреченный максимальный элемент.

Описание:

   Поскольку нужно поместить строку после перого встреченного максимального элемента при поиске используем строгий знак больше. Найдя это число, сохраняем номер его строки в переменной smax. Далее в строку m записываем числа из (m-1)-ой строки, в (m-1)-ую из (m-2)-ой и т.д. до строки с максимальным элементом. Наконец, в строку, следующую за smax, записываем первую строку.


Код:


program MaximuM;
const
     m = 7;	{строки}
     n = 4;	{столбцы}
var
 Matrix: array[1..m, 1..n] of integer;	{двумерный массив}
 i,j,max,smax: integer;	{max - максимальный элемент; smax - строка, в которой max}

Begin

Writeln('Матрица:');

max:= -41;
smax:= 1;

Randomize;
for i:=1 to m do begin	{задание и вывод массива, поиск максимального элемента}
 for j:=1 to n do begin
                  Matrix[i, j]:=Random(71)-40;	{задаём массив числами от -40 до 30}
                  Write( (Matrix[i, j]):4 );
                  if (Matrix[i, j] > max) then	{как только нашли элемент строго больше max}
                      begin
                      max:= Matrix[i, j];	{сохраняем его в max}
                      smax:= i;			{и номер его строки в smax}
                      end;
                  end;
                 Writeln;
                 end;
Writeln('Максимальный элемент ', max,' в строке ',smax,':');

Writeln('Новая матрица:');

for i:= m downto smax+1 do begin	{цикл строкам m,m-1,...,smax+1}
 for j:=1 to n do begin
      if (i = smax + 1) then Matrix[i, j]:= Matrix[1, j] else
      if smax <> m then Matrix[i, j]:= Matrix[i-1, j];{если не в последней строке}
{строки от smax+1 до m сдвигаем вниз, последнюю строку теряем}
{в строку, следующей за строкой smax записываем элементы первой строки}
                  end;
                 end;

for i:=1 to m do begin	{цикл по всем элементам массива}
 for j:=1 to n do begin
      Write( (Matrix[i, j]):4 );
                  end;
      Writeln;
                 end;

Readln;
End.




Hosted by uCoz