将输入读取到数组后:
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
但是,我希望将该数组的所有元素读取到一维数组中,这样当我这样做时:
for(int i=0; i<6; i++)
printf("%d ", allElements[i]);应该是:1 3 5 2 4 6
我怎样才能做到这一点呢?
发布于 2011-11-15 07:42:02
下面是什么:
for(int i=0; i<6; i++)
{
allElements[i] = inputs[2*(i%3) + (i/3)];
}假设inputs是一个由3x2组成的二维数组,那么i%3是一个坐标,i/3是另一个坐标。只需将其转置为2x3矩阵,即可完成!
发布于 2011-11-15 07:57:18
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];
}发布于 2011-11-15 08:22:31
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];
}
}逻辑绝对可以简化。只是第一次尝试,而不去管它。
如果想让它适用于第一种情况
allElements[0]=inputs[0];
allElements[1]=inputs[2];
allElements[2]=inputs[4];
allElements[3]=inputs[1];
allElements[4]=inputs[3];
allElements[5]=inputs[5]; https://stackoverflow.com/questions/8129672
复制相似问题