Как заполнить двумерный массив из одномерного определенными способом?
У меня есть массив arr[18] = [-1 0 3 -8 15 -24 35 -48 63 -80 99 -120 143 -168 195 -224 255 -288] Необходимо заполнить двумерный массив таким образом:
[-1 35 143
0 -48 168
......]
То есть размером 6x3 слева на право и сверху вниз по столбцам. Попробовал вот так, но не работает:
for(int i = 0; i < 6; i++) {
for(int j = 0; j < 3; j++) {
array2D[i][j] = array1D[i * j % 6];
}
}
Ответы (2 шт):
Автор решения: Harry
→ Ссылка
Примерно так.
int k = 0;
for(int j = 0; j < 3; j++) {
for(int i = 0; i < 6; i++) {
array2D[i][j] = array1D[k++];
}
}
Или так:
for(int j = 0; j < 3; j++) {
for(int i = 0; i < 6; i++) {
array2D[i][j] = array1D[j*6+i];
}
}
Автор решения: Алексей Р
→ Ссылка
#include <iostream>
using namespace std;
int main()
{
int arr[18] = {-1, 0 , 3, -8, 15, -24, 35, -48, 63, -80, 99, -120, 143, -168, 195, -224, 255, -288};
int array2D[6][3];
for(int i = 0; i < 18; i++) {
array2D[i % 6][i / 6] = arr[i];
}
// output
for(int r = 0; r < 6; r++) {
for(int c = 0; c < 3; c++) {
cout << array2D[r][c] << " ";
}
cout << "\n";
}
return 0;
}
-1 35 143
0 -48 -168
3 63 195
-8 -80 -224
15 99 255
-24 -120 -288