Bool A, B и C Истинное сочетание

Мне нужно объединить 3 bools для проверки всей таблицы истинности (8 комбинаций) в c ++.

У меня есть 2 особых случая, которые нужно учитывать, они a, b и c — все верно, а a, b — правда, а c — ложь.

Остальные не нуждаются в специальном обслуживании (они будут работать вместе без инструкций для конкретного случая)

Есть ли способ проверить только для этих двух случаев, а затем для отдельных случаев, но все же позволяют людям работать вместе?

Такие как,

если && б && с)

и если ( && б && ! С)

тогда если а, если б, если с соответственно

Я думаю, что он использует если иное, но мне не повезло, то, как он у меня сейчас, выполняет некоторые операции дважды, так как «a» верно для a b c, a b! C, а также для a.

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

-6

Решение

Ваши два особых случая могут быть обработаны примерно так:

if (a && b)
if (c)
all_true();
else
ab_true_c_false();

Другой возможностью было бы объединить три арифметически, а затем использовать результат в качестве индекса:

typedef void (*action)();

// handlers for the individual cases:
void all_false() { std::cout << "all_false"; }
void a_true() { std::cout << "a true"; }
// ...

// table of handlers. The order of handlers in the array is critical.
static const action actions[] = {
all_false, a_true, b_true, ab_true,
c_true, ac_true, bc_true, abc_true };

// Create index into array
int x = a | (b << 1) | (c << 2);

// invoke correct handler:
actions[x]();
1

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

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

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