В настоящее время я работаю над программой, которая печатает таблицу с 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;
}
Это домашнее задание, поэтому я хотел бы понять его, а не просто получить ответ.
Индекс неверен. Только 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;
}
Есть попытка чтения из связанных значений из массива.
Если тебе надо 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];