truetable — Переполнение стека в булевой таблице правды

(р -> д) <-> [(r ^ t) v (не) s]

Это уравнение было дано моим учителем, чтобы мы могли кодировать таблицу истинности. Я уже проверил проверки для этого со стороны учителя, но у меня возникают проблемы при попытке заполнить массивы:

bool p[32] = { false };
bool q[32] = { false };
bool r[32] = { false };
bool s[32] = { false };
bool t[32] = { false };

Я знаю, что я пытаюсь выделить память, которая не была выделена (получение «стек вокруг переменной ‘p’ был поврежден»), выполнив:

for (int i = 0; i < counter; i++)
{
toTrue[i] = true;
for (int j = (counter * 2); j < (counter * 3); j++)
{
toTrue[j] = true;
for (int k = (counter * 4); k < (counter * 5); k++)
{
toTrue[k] = true;
for (int l = (counter * 6); l < (counter * 7); l++)
{
toTrue[l] = true;
for (int m = (counter * 8); m < (counter * 9); m++)
{
toTrue[m];
}
}
}
}
}

Это просто основано на базовых таблицах истинности, в которых будет получена базовая таблица истинности с двумя переменными ИЛИ:

a b    c
1 1    1
1 0    1
0 1    1
0 0    0

Я не уверен, как решить эту проблему без использования векторов, о которых у меня есть очень ограниченные знания, поэтому я не уверен на 100% в этом направлении. У меня была еще одна идея: попытаться создать несколько методов для заполнения p, затем q, r и т. Д. Но мой учитель ранее уже говорил мне, что я расширяю код больше, чем нужно, и мне хочется делать несколько методов, таких как это привело бы к тому, что он сказал то же самое. Любой совет?

0

Решение

Другой и простой метод.

#include<iostream>

using namespace std;int main( int argc, char* argv[]) {

bool p,q,r,s,t;

cout << "p  q  r  s  t  (p -> q) <-> [( r ^ t ) v (not) s] \n";
for ( int i = 0 ; i < 32 ; i++ ) {

p = ( i >> 0 ) & 0x01;
q = ( i >> 1 ) & 0x01;
r = ( i >> 2 ) & 0x01;
s = ( i >> 3 ) & 0x01;
t = ( i >> 4 ) & 0x01;

cout << p << "  ";
cout << q << "  ";
cout << r << "  ";
cout << s << "  ";
cout << t << "  ";

cout  << ((!p || q)  == (( r ^ t ) ||  !s));

cout << endl;
}
return 0;
}
1

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

Других решений пока нет …

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