gpt4 book ai didi

c - 沿 C 中二维数组的对角线读取

转载 作者:太空宇宙 更新时间:2023-11-04 04:32:47 24 4
gpt4 key购买 nike

我目前有一个行和列大小为 15 的字符数组。我的目标是沿着对角线(最终在所有四个方向)读取并将值存储在一个单独的数组中。单独的数组有 15 列和 30 行,多余的值由空字符占用。

3x3 数组的快速示例:

原始数组:

A B C
D E F
G H I

新数组:

A \0 \0
D B \0
G E C
H F \0
I \0 \0

这是我写的代码:

// DiagUpRight Array
int initDiagUpRightArray(char wordArray[], char diagUpRightArray[]){
// First, initialize array with null characters
int i = 0;
int j = 0;
for (i=0; i<wDiagRowSize; i++) {
for (j=0; j<wDiagColSize; j++) {
diagUpRightArray[i][j] = '\0';
}
}

// Next, array ought to put each diagonal (from bottom-to-top, left-to-right) in a row
int i = 0;
int j = 0;
int counter = 1;
for (i=0; i<wDiagRowSize; i++) {
for (j=0; j<wDiagColSize; j++) {
if (counter % 2) {
//counter is an odd number
diagUpRightArray[i][j] = wordArray[i][j]; //placeholder
counter++;
} else {
//counter is an even number
diagUpRightArray[i][j] = wordArray[i][j]; //placeholder
counter++;
}
}
}

return(EXIT_SUCCESS);
}

(我知道这段代码效率不高;我对 C 语言和编程还是个新手。)

wDiagRowSize 和 wDiagColSize 之前分别定义为 30 和 15。

我知道我的问题出在带有//placeholder 注释的两行,但我不确定如何继续。

最佳答案

I know my problems are with the two lines with //placeholder comment, but I'm not sure how to proceed.

计数器 和区分奇数/偶数是徒劳的。无论如何:

    int i, j, k;
for (i=0; i<wDiagRowSize; i++)
for (j=0; j<wDiagColSize; j++)
diagUpRightArray[i][j] =
i<wDiagColSize && j<=i ? wordArray[i-j][j]
: wDiagColSize<=i && (k=wDiagColSize-1-j)>i-wDiagColSize ? wordArray[k][i-k]
: '\0';

关于c - 沿 C 中二维数组的对角线读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34016070/

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