Здравствуйте! Я никак не могу понять, почему у меня разнятся ответы.
Есть выражение "(x ≡ z ) ∨ (x → (y ∧ z))", необходимо найти все возможные x, y и z, при которых функция примет значение 0. Для решения я написал следующее:
#include <iostream>
using namespace std;
int main() {
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
if ( ( x == z) || (!x || (y && z)) == 0)
cout << x << y << z << endl;
}
И получил:
000
010
100
101
110
111
Хотя должен был иметь на выходе только 110 и 100, поэтому я решил расчленить выражение на две части:
#include <iostream>
using namespace std;
int main() {
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
if ((!x || (y && z)) == 0)
cout << x << y << z << endl;
cout << "End of cycle 1" << endl;
for (int x = 0; x < 2; x++)
for (int y = 0; y < 2; y++)
for (int z = 0; z < 2; z++)
if ( ( x == z) == 0)
cout << x << y << z << endl;
}
Результат:
100
101
110
End of cycle 1
001
011
100
110
Из этого следует, что если между выражениями стояло бы логическое ИЛИ, то должно было бы получиться как раз 100 и 110.
Подскажите, пожалуйста, что я упускаю