我的代码出错 - 布尔真值表

时间:2016-03-07 00:35:37

标签: c++ truthtable

我目前正在开发一个打印5变量真值表的程序。我正在使用2d数组。我的代码目前生成表,但说它已损坏并且“变量”表周围的堆栈已损坏。有任何帮助吗?

#include <iostream>
using namespace std;

int main() {
    bool table[5][32];

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            table[i][j] = ((i >> j)& 1);
        }
    }

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            cout << table[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

这是家庭作业,所以我想了解它,而不仅仅是回答。

2 个答案:

答案 0 :(得分:1)

索引错了。只有table[0]table[4]可用,因此访问table[5]table[31]是非法的。

试试这个:

#include <iostream>
using namespace std;

int main() {
    bool table[32][5]; // swap 32 and 5

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            table[i][j] = ((i >> j)& 1);
        }
    }

    for (int i = 0; i < 32; i++) {
        for (int j = 0; j < 5; j++) {
            cout << table[i][j] << " ";
        }
        cout << endl;
    }
    return 0;
}

答案 1 :(得分:1)

尝试从数组中读取超出范围的值。

如果您需要5x32矩阵,请使用以下代码:

    for (int i = 0; i < 5; i++) {          // 32-> 5
        for (int j = 0; j < 32; j++) {     // 5->32

如果您需要32x5矩阵,请替换以下代码:

    bool table[32][5];        //it was table[5][32];