Записать матрицу в одномерный массив

Записать значения элементов прямоугольной матрицы в одномерный массив в порядке следования столбцов.

Размерность одномерного массива определяется произведением количества столбцов и строк матрицы. Так, если строк 3, а столбцов 4, то всего элементов в матрице 12. Следовательно, элементов в одномерном массиве должно быть также 12.

В программах ниже номера элементов одномерного массива (k) при его заполнении независимы от номеров строки (i) и столбца (j). Т.е. счетчик k увеличивается «вручную» при каждой записи элемента матрицы в одномерный массив. Возможно есть определенная зависимость между i и j с одной стороны и k — c другой.

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

Pascal
паскаль двумерный массив в одномерный

const N = 3; M = 4;
var
mtx: array[1..N,1..M] of byte;
arr: array[1..N*M] of byte;
i,j,k: byte;
begin
randomize;
for i:=1 to N do begin
for j:=1 to M do begin
mtx[i,j] := random(100);
write(mtx[i,j]:3);
end;
writeln;
end;
writeln;

k := 0;
for j:=1 to M do
for i:=1 to N do begin
k := k + 1;
arr[k] := mtx[i,j];
write(arr[k]:3);
end;
writeln;
end.



23 88 30 8
99 55 40 89
58 3 27 22

23 99 58 88 55 3 30 40 27 8 89 22
Язык Си

#include < stdio.h>
#define N 3
#define M 4
main() {
int mtx[N][M], arr[N*M], i, j, k;
srand(time(NULL));
for (i=0; i< N; i++) {
for (j=0; j< M; j++) {
mtx[i][j] = rand() % 100;
printf("%3d", mtx[i][j]);
}
printf("\n");
}
printf("\n");

k = -1;
for (j=0; j< M; j++)
for (i=0; i< N; i++) {
k += 1;
arr[k] = mtx[i][j];
printf("%3d", arr[k]);
}
printf("\n");
}
Python

из двумерного массива сделать одномерный python

from random import random
N = 3
M = 4
mtx = []
arr = [0] * N*M

for i in range(N):
a = []
for j in range(M):
a.append(int(random()*100))
mtx.append(a)

for i in range(N):
for j in range(M):
print("%3d" % mtx[i][j], end='')
print()
print()

k = -1
for j in range(M):
for i in range(N):
k += 1
arr[k] = mtx[i][j]
print("%3d" % arr[k], end='')
print()
КуМир

алг
нач
цел N = 3
цел M = 4
целтаб mtx[1:N,1:M], arr[1:N*M]
цел i, j, k
нц для i от 1 до N
нц для j от 1 до M
mtx[i,j] := irnd(100)-1
вывод mtx[i,j]:3
кц
вывод нс
кц
вывод нс

k := 0
нц для j от 1 до M
нц для i от 1 до N
k := k+1
arr[k] := mtx[i,j]
вывод arr[k]:3
кц
кц
кон
Basic-256

N = 3
M = 4
dim mtx(N,M)
dim arr(N*M)
for i=0 to N-1
for j=0 to M-1
mtx[i,j] = int(rand() * 100)
print mtx[i,j] + " ";
next j
print
next i
print

k = 0
for j=0 to M-1
for i=0 to N-1
arr[k] = mtx[i,j]
print arr[k] + " ";
next i
next j
print

Оцените статью
Добавить комментарий