Переписать элементы матрицы в одномерный массив по указанному правилу - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Задана матрица целых чисел размером (N; N). Переписать элементы матрицы в одномерный массив, таким образом, чтобы в одномерном массиве сначала располагался последний столбец матрицы, потом предпоследний и тд. Разрешено использовать лишь две переменные для индексирования элем. матрицы и одномерного массива. Спасибо!

Решение задачи: «Переписать элементы матрицы в одномерный массив по указанному правилу»

textual
Листинг программы
const n=5;
var a:array[0..n-1,0..n-1] of integer;
    b:array[0..n*n-1] of integer;
    i,j:integer;
begin
 writeln('матрица:');
 for i:=0 to n-1 do
  begin
   for j:=0 to n-1 do
    begin
     a[i,j]:=random(11);
     write(a[i,j]:3)
    end;
   writeln
  end;
 j:=n*(n-1); 
 writeln('одномерный массив:');
 for i:=0 to n*n-1 do
  begin 
   b[i]:=a[(j mod n),(j div n)];
   write(b[i],' ');
   inc(j);   
   if j mod n=0 then j:=n*(n-((i+1)div n + 1));
  end;
 readln 
end.

Объяснение кода листинга программы

В данном коде объявлены следующие переменные:

  • n - количество строк и столбцов матрицы (в данном случае равно 5);
  • a - матрица размером n x n, заполненная случайными числами от 0 до 10;
  • b - одномерный массив (или массив строк), размер которого равен произведению n на n;
  • i - индекс строки матрицы;
  • j - индекс столбца матрицы;
  • random(11) - функция генерации случайного числа в диапазоне от 0 до 10 (включительно). В первой части кода происходит заполнение матрицы a случайными числами. Для каждой строки (от i=0 до i=n-1) и каждого столбца (от j=0 до j=n-1) вычисляется случайное число и записывается в соответствующую ячейку матрицы. Во второй части кода происходит преобразование матрицы a в одномерный массив b. Для этого используется цикл for i=0 до nn-1, где nn - это размер массива b. В каждой итерации цикла вычисляется значение b[i] как элемент матрицы a, находящийся по индексу (i mod n) в строке и (i div n) в столбце. Значение записывается в массив b. После этого происходит инкремент j, чтобы перейти к следующему элементу массива b. Если j mod n равно 0, то j обновляется, чтобы перейти к началу следующего подмассива массива b (т.е. к новому ряду). Код завершается вызовом функции readln для чтения пользовательского ввода и завершения программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы