这个char数组代码有什么问题?

时间:2012-01-01 05:48:07

标签: c++ arrays sudoku

我是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;

}

另外我知道可能有更简单的方法来构建数独游戏板,但我已经可以在脑海中看到这个游戏将如何工作,如果它失败了,那么唯一的学习方法就是失败。所有我想知道的是阵列有什么问题。

3 个答案:

答案 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那样,它们会按照您的预期打印出来。