2

現在、5 つの変数の真理値表を出力するプログラムに取り組んでいます。2次元配列を使用しています。私のコードは現在テーブルを生成していますが、それが壊れていると言い、「変数「テーブル」の周りのスタックが壊れています。助けはありますか?

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

これは宿題なので、ただ答えを出すだけでなく、理解したいと思います。

4

2 に答える 2

1

インデックスが間違っています。table[0]toしか利用できないので、 totable[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;
}
于 2016-03-07T00:37:26.527 に答える
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];
于 2016-03-07T04:52:28.423 に答える