gpt4 book ai didi

将二维数组转换为一维数组(有条件)

转载 作者:太空宇宙 更新时间:2023-11-04 04:03:08 28 4
gpt4 key购买 nike

我有一个二维 (3x7) 数组,我想转换为一维数组,以便我提供的行位于中心。行值可能沿途变化,但必须位于中心。

#define numRows 3
#define numCols 7
#define TotalNum 21

int arr[numRows-1][numCols-1] =
{ {0,1,2,3,4,5,6}, {7,8,9,10,11,12,13}, {14,15,16,17,18,19,20} };
int stack[TotalNum-1];

stackup(arr,stack,row);

void stackup(int *p,int *s,int &row1)
{
int k =0;
for(int i = 0; i<numRows; i++)
{
for(int j = 0; j<numCols; j++)
{
s[k] = p[i][j];
k++;
}
}
}

函数 stackup 肯定是错误的,需要调整,但我不确定如何调整它,使提供的行在插入堆栈时位于中心。

最佳答案

#define numRows 3
#define numCols 7
#define TotalNum (numRows*numCols)

void stackup(int **p,int *s,int row1)
{
int k = 0,t;
int middle = (numRows-1)/2;
for (int i = 0; i<numRows; i++) {
t=i;
if (i==middle || i==row1)
i = (i==row1)?middle:row1;
for (int j = 0; j<numCols; j++)
s[k++] = p[i][j];
i=t;
}
}

基本上是将“p”中的所有元素逐行依次添加到“s”中。当到了中间行的时候,将添加 row1 中的元素。当需要添加第 1 行的元素时,将添加中间行的元素。

关于将二维数组转换为一维数组(有条件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9434564/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com