【问题标题】:Error in my code - Boolean Truth Table我的代码中的错误 - 布尔真值表
【发布时间】:2016-03-07 00:35:37
【问题描述】:

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

#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;
}

这是作业,所以我想了解它,而不仅仅是一个答案。

【问题讨论】:

    标签: c++ truthtable


    【解决方案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;
    }
    

    【讨论】:

    • 所以交换这些值只是将它与我​​分配变量和打印的 for 循环对齐?
    • 是的,您在 for 循环中将 i 变量添加到最多 32 个,但第一个数组只有 5 个单元格。
    【解决方案2】:

    试图从数组中读取边界值。

    如果你需要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];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-02
      • 1970-01-01
      • 2019-03-16
      • 2020-01-05
      • 2020-05-27
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多