Ошибка в моем коде — Булева таблица правды

В настоящее время я работаю над программой, которая печатает таблицу с 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

Решение

Индекс неверен. Только 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

Другие решения

Есть попытка чтения из связанных значений из массива.

Если тебе надо 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];
1

По вопросам рекламы [email protected]