:
int * inputs;
“inputs
”是一维数组:inputs[6]
,然后读取此数组,值为:
inputs[0]=1
inputs[1]=2
inputs[2]=3
inputs[3]=4
inputs[4]=5
inputs[5]=6
我想将这个数组读入另一个一维数组:
int counter=0;
int * allElements = new int[6];
for(int i=0; i<6; i++)
{
allElements[counter++] = inputs[i];
}
这是将所有元素读入一维数组的传统方式,我相信如果我以这种方式阅读“allElements
”的元素:
for(int i=0; i<6; i++)
printf("%d ", allElements[i]);
应该是:1 2 3 4 5 6
但是,我想将该数组的所有元素读入1维数组,这样当我这样做时:
for(int i=0; i<6; i++)
printf("%d ", allElements[i]);
应该是:1 3 5 2 4 6
我怎样才能达到这个目的?
答案 0 :(得分:3)
int * allElements = new int[6];
for(int i=0; i<6; i+=2)
{
allElements[i/2] = inputs[i];
allElements[3+i/2] = inputs[i+1];
}
答案 1 :(得分:2)
怎么样:
for(int i=0; i<6; i++)
{
allElements[i] = inputs[2*(i%3) + (i/3)];
}
想象一下inputs
是一个二维数组,3x2,然后i%3是一个坐标,i / 3是另一个坐标。只需将其转换为2x3矩阵即可完成!
答案 2 :(得分:0)
const int size =6;
int inputs[size]={1,2,3,4,5,6};
int allElements[size];
...
if (size % 2)
{
int middle=(size/2) +1;
for(int i=0; i<size; i+=2)
{
allElements[i/2] = inputs[i];
if (i < size-2)
allElements[middle+i/2] = inputs[i+1];
}
}
else
{
int middle=size/2;
for(int i=0; i<size; i+=2)
{
allElements[i/2] = inputs[i];
allElements[middle+i/2] = inputs[i+1];
}
}
逻辑绝对可以简化。只是第一次尝试并让它独自一人。
如果希望它适用于1个案例
allElements[0]=inputs[0];
allElements[1]=inputs[2];
allElements[2]=inputs[4];
allElements[3]=inputs[1];
allElements[4]=inputs[3];
allElements[5]=inputs[5];