(p -> q) ‹-> [(r ^ t) v (not) 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 и т. Д. Но мой учитель уже сказал мне ранее, что я расширяю код больше, чем мне нужно, и я чувствую, что использую несколько методов, например это привело бы к тому, что он сказал бы то же самое. Любой совет?
toTrue[m];
только добавляет путаницы относительно намерения кода. - person François Andrieux   schedule 25.09.2018