我想将1 D数组的值放入2D数组中。然后我想打印出2D数组的值。
我有以下代码:
client_secret_proof
输出应为:
#include <string.h>
#include <fstream>
#include <iostream>
#include <conio.h> //for _kbhit
using namespace std;
#define MAX_N 100
#include<stdio.h>
int c[MAX_N] = {35, 23 , 56 , 30, 110 , 123 , 13 , 31 };
int b[4][4];
int main()
{
int i,j,k,l;
for(i=0;i<8;i++)
{ cout << c[i];}
cout << endl;
for(i=0;i<4;i++)
{ for(j=0;j<4;j++)
{
b[i][j] = c[i];
}
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
cout << b[i][j] << " ";
}
cout << "\n";
cout << "\n";
}
cout << "\n\nHit<enter> to finish";
while ( !_kbhit());
return (0);
}
有什么想法吗?
谢谢!
答案 0 :(得分:1)
让原始数组
int arr[] = {10, 20, 30, 40, 50, 60};
您可以选择所需的行数,以便相应地将数组划分为2个维度。
int row;
cout << "Enter Number of rows: ";
cin >> row;
之后通过
计算列数来初始化2D数组int size = sizeof(arr)/sizeof(int);
int col = (int) ceil(size/row); // from math.h/cmath library
int array[row][col];
现在迭代并使用1D数组填充2D数组
int idx = 0;
for(int i=0; i<row; i++)
for(int j=0; j<col && idx<size; j++)
array[i][j] = arr[idx++];
干运行
arr = [10, 20, 30, 40, 50, 60]
Enter Number of rows = 2
array = {{10, 20, 30},
{40, 50, 60}}
使用1D数组在填充2D数组的内部嵌套循环中编辑:idx<size
。这样您就可以处理奇数大小的1D阵列。
答案 1 :(得分:0)
如果c有16个元素:
for(int i = 0, row = 0; row < 4; ++row)
{
for(int column = 0; column < 4; ++i, ++column)
{
b[row][column] = c[i];
}
}