我是C ++的新手,只是编程了几天,所以这看起来很愚蠢,但是你能发现为什么我的阵列工作不正常吗?这是我正在设计的解决数独谜题的程序的开始,但我用来解决它的2D数组工作不正常。
#include <iostream>
#include <string>
using namespace std;
int main () {
char dash[9][9];
for (int array=0; array<9; array++) {
for (int array2=0; array2<9; array2++) {
dash[array][array2]=array2;
cout << dash[array][array2];
}
}
cout << dash[1][4] << endl; //This is temporary, but for some reason nothing outputs when I do this command.
cout << "╔═══════════╦═══════════╦═══════════╗" << endl;
for (int count=0; count<3; count++) {
for (int count2=0; count2<3; count2++) {
cout << "║_" << dash[count][count2*3] << "_|_" << dash[count] [count2*3+1] << "_|_" << dash[count][count2*3+2] << "_";
}
cout << "║" << endl;
}
cout << "╠═══════════╬═══════════╬═══════════╣" << endl;
for (int count=0; count<3; count++) {
for (int count2=0; count2<3; count2++) {
cout << "║_" << dash[count][count2*3] << "_|_" << dash[count] [count2*3+1] << "_|_" << dash[count][count2*3+2] << "_";
}
cout << "║" << endl;
}
cout << "╠═══════════╬═══════════╬═══════════╣" << endl;
for (int count=0; count<3; count++) {
for (int count2=0; count2<3; count2++) {
cout << "║_" << dash[count][count2*3] << "_|_" << dash[count][count2*3+1] << "_|_" << dash[count][count2*3+2] << "_";
}
cout << "║" << endl;
}
cout << "╚═══════════╩═══════════╩═══════════╝" << endl;
return 0;
}
另外我知道可能有更简单的方法来构建数独游戏板,但我已经可以在脑海中看到这个游戏将如何工作,如果它失败了,那么唯一的学习方法就是失败。所有我想知道的是阵列有什么问题。
答案 0 :(得分:5)
您的char
数组中存储了数字数据,这很好,但cout
尝试将其打印为字符。在输出期间尝试转换为整数:
cout << (int)dash[count][count2*3]
另一种选择是在数组中存储字符:
for (int array=0; array<9; array++) {
for (int array2=0; array2<9; array2++) {
dash[array][array2] = '0' + array2;
}
}
答案 1 :(得分:3)
你试图将字符显示为整数。嗯,从技术上讲,它们是,但它们不显示为整数。将char数组更改为int数组(非常简单),或者每次显示数据时,将其转换为int(繁琐)。
答案 2 :(得分:0)
将char dash[9][9]
更改为int dash[9][9]
。您将小数字分配给dash[i][j]
,因为char
它们几乎是不可打印的控制字符,因此无法识别任何可理解的内容。如int
那样,它们会按照您的预期打印出来。