gpt4 book ai didi

c++ - 打印给定列和行约束的交替 X 和 O 矩阵?

转载 作者:行者123 更新时间:2023-12-04 12:17:55 28 4
gpt4 key购买 nike

给定以下参数,我正在尝试编写一个打印 X 和 O 矩阵的算法:

int numRows
int numCols
int charsPerCol
int charsPerRow
例如打电话
printXOMatrix(int charsPerCol, int charsPerRow, int numCols, int numRows);
带参数
printXOMatrix(3,2,15,8);
将导致以下内容被打印到标准输出:
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
XXXOOOXXXOOOXXX
XXXOOOXXXOOOXXX
OOOXXXOOOXXXOOO
OOOXXXOOOXXXOOO
到目前为止,这是我的代码,如果列数/每列的字符数不同,它似乎可以正确打印,但在以下情况下会失败:
printXOMatrix(2,2,8,8);
以下内容打印到标准输出:
XXOOXXOO
OOXXOOXX
OOXXOOXX
XXOOXXOO
XXOOXXOO
OOXXOOXX
OOXXOOXX
XXOOXXOO
我如何处理这种边缘情况/清理我的代码?这是我到目前为止所拥有的:
#include <stdio.h>

void getXAndOGrid(int charsPerCol, int charsPerRow, int numCols, int numRows) {
char c = 'X';
for (int i=1; i<=(numCols*numRows); i++) {
// if current index is divisible by the columns (new row)
if (i % numCols == 0) {
// print character, then newline
printf("%c\n", c);
// if current index is divisible by number of columns times num of chars in column
if (i % (numCols * charsPerRow) == 0) {
if (c == 'O') {
c = 'X';
} else {
c = 'O';
}
}
// else if current index is divisible by num in row before it alternates
// and is not divisible by number of columns
} else if (i % charsPerCol == 0) {
printf("%c", c);
if (c == 'O') {
c = 'X';
} else {
c = 'O';
}
} else {
printf("%c", c);
}
}
}

int main() {
getXAndOGrid(3,2,15,8);
return 0;
}

最佳答案

好吧,在确定代码与 selbie 所说的不一致之后,问题似乎是当您到达行尾时,您没有将 c 重置回行首时的状态!
但问题应该是:你为什么要写这么多代码?以下完全相同(好吧,除了正确处理边缘情况!):-

void PrintMatrix (int charsPerCol, int charsPerRow, int numCols, int numRows)
{
for (int y = 0 ; y < numRows ; ++y)
{
for (int x = 0 ; x < numCols ; ++x)
{
printf ((((x / charsPerCol) & 1) ^ ((y / charsPerRow) & 1)) != 0 ? "o" : "x");
}

printf ("\n");
}
}

关于c++ - 打印给定列和行约束的交替 X 和 O 矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67864200/

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