Преобразовать целочисленную матрицу размера N x M таким образом, чтобы строка с номером K...

0 голосов
70 просмотров

Преобразовать целочисленную матрицу размера N x M таким образом, чтобы строка с номером K непосредственно следовала за строкой с номером Q, сохранив порядок следования остальных строк


Информатика (365 баллов) | 70 просмотров
0

Укажите язык программирования и версию.

0

С++ пойдёт?

0

Надо заменить строку, следующую за Q, на строку K, верно?

0

Или поменять их местами?

Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.3, сборка 1600 от 23.12.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var (n,m):=ReadInteger2('Количество строк и столбцов в матрице:');
  Writeln('*** Исходная матрица ***');
  var a:=MatrRandom(n,m,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  var (q,k):=ReadInteger2('Укажите номера строк q и k:');
  Assert((k<>q) and k.Between(1,n) and q.Between(1,n),'Неверная пара (q,k)');
  k-=1; q-=1; // перешли к индексам
  var rk:=a.Row(k);
  if k    for var r:=k+1 to q do a.SetRow(r-1,a.Row(r));
    a.SetRow(q,rk)
    end
  else begin
    for var r:=k-1 downto q+1 do a.SetRow(r+1,a.Row(r));
    a.SetRow(q+1,rk)
    end;
  Writeln('*** Результат ***'); a.Println(4)
end.

Примеры
Количество строк и столбцов в матрице: 5 8
*** Исходная матрица ***
  32  -6 -66  81  84   0  50 -83
  93   5  90 -33  88  30  -5  85
 -46  35 -22  74 -66   8  -3 -86
 -23 -81 -82  30  -1 -71  28  19
   0 -95 -30 -46 -24 -77  38  49
--------------------------------
Укажите номера строк q и k: 4 1
*** Результат ***
  93   5  90 -33  88  30  -5  85
 -46  35 -22  74 -66   8  -3 -86
 -23 -81 -82  30  -1 -71  28  19
  32  -6 -66  81  84   0  50 -83
   0 -95 -30 -46 -24 -77  38  49

Количество строк и столбцов в матрице: 4 3
*** Исходная матрица ***
 -68  53 -35
 -83  78 -78
  99  -4  -9
 -86  11 -30
------------
Укажите номера строк q и k: 2 4
*** Результат ***
 -68  53 -35
 -83  78 -78
 -86  11 -30
  99  -4  -9
image
(150k баллов)