所以我的代码有问题,我无法查明。简单地说,我想以网格格式打印出c ++中2D char数组的内容。我的代码是以下(请记住,我不想更改我的代码的结构只是找到为什么我没有得到所需的结果):
setDT(start)[, if(uniqueN(sub_grp) > 1) .SD, grp]
# grp obs sub_grp
#1: A 1 A1
#2: A 2 A1
#3: A 3 A2
#4: A 4 A2
#5: C 8 C1
#6: C 9 C2
#7: C 10 C3
我希望这能给我的是一个基本的井字游戏网格,其中有X和O的空白区域。相反,我得到的是一个预期的网格,在一些正方形中放置了随机字符,无论我做多少调整都给出了相同或相似的结果,但我不明白为什么。任何帮助将不胜感激(也最好不包括基本的c ++之外的任何东西,如函数,循环等,因为我还没有学到这些,即使我们知道它们也无法在我们的作业中使用它们。)
答案 0 :(得分:1)
检查阵列范围:
char board[3][4]
然后你有:
board[i][j] -> board[1,2,3,5,6,7,9,10,11][j]
无论i%4
是什么,board
中的内容都是i
而不是i%3
。
使用任何一种结构:
for i
for j
board[i][j]
或
for i
((char*)board)[i]
我已编辑了您的代码:
#include <iostream>
#include <string>
using namespace std;
void drawBoard(char board[3][4])
{
for (int i = 0; i < 12; i++)
{
if(i%4!=3)
{
cout<<" "<<board[i/4][i%4]; // board[0 to 2][0 to 2, 3 skept]
if(i%4<2)
cout<<" |";
}
else
{
if(i/4<2)
cout<<endl<< "---+---+---";
cout<<endl; // new line
}
}
}
int main()
{
char board[3][4] = { {'x', 'o', 'x', '\0'}, {'o', 'x', 'x', '\0'}, {'o',
'o', 'x', '\0'} };
drawBoard(board);
cin.get();
}
结果:
x | o | x
---+---+---
o | x | x
---+---+---
o | o | x