Вставка нового столбца в матрицу со сдвигом исходных элементов

Оригинал статьи: http://www.cyberforum.ru/pascal/thread133142.html
Благодарен всем авторам, которые внесли свой вклад в сборку кода.

Например: вставить столбец между 5 и 6 столбцом исходной матрицы.

 
var
  a: array[1..10, 1..12] of integer;
  b: array[1..10] of integer;
  i, k, n, j, q: integer;

begin
  write('Введите размерность матрицы, не больше 10 и не меньше 6 : ');
  repeat
    read(n);
  until (n >= 6) and (n < 11);
  
  writeln('Введите элементы одномерного массива:');
  for k := 1 to n do 
  begin
    read(b[k]);
  end;
  
  write('В какой столбец будут вставляться элементы: ');
  repeat
    read(q);
  until (q >= 1) and (q <= n);
  
  writeln('Для вывода результата нажмите ENTER...');
  readln;
  
  
  write('Исходная матрица:');
  writeln;
  for i := 1 to n do 
  begin
    for j := 1 to n do 
    begin
      a[i, j] := random(10);
      write(a[i, j]:4);
    end;
    writeln;
  end;
  
  for j := n + 1 downto q do 
  begin
    for i := 1 to n do 
    begin
      a[i, j + 1] := a[i, j];
    end;
  end;
  
  for i := 1 to n do 
  begin
    a[i, q] := b[i];
  end;
  
  writeln;
  writeln('Полученная матрица:');
  for i := 1 to n do 
  begin
    for j := 1 to n + 1 do 
    begin
      write(a[i, j]:4);
    end;
    writeln;
  end;
end.
  

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

0 0 голос
Article Rating
Подписаться
Уведомить о
guest
0 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии