编辑:从解释,答案和示例中可以理解:
我有三个变量,每个变量只能假设两个特定值。例如,此值可以是0或1。
我想要一个逻辑,其中输出将是三个变量中大多数存在的值。
例如:
如果
x=0
,y=0
和z=1
,则输出为0。如果
x=1
,y=0
和z=1
,则输出为1。
@Femaref的答案在可能的值为0和1时给出了一个好的结果,但我需要一个通用的解决方案,它可以处理变量的任何可能的值。
答案 0 :(得分:14)
if((x+y+z) >= 2)
return 1;
return 0;
答案 1 :(得分:3)
if x==y then return x else return z
这不取决于可能的值为0和1。
答案 2 :(得分:1)
我会使用表格查找。将您的三位输入转换为数字,并使用它来索引到一个数组,该数组为每个可能的输入保存正确的结果。
您可以使用简单的数学,并检查总和> = 2,但很难猜测这是否是个好主意。它符合手头的要求,但如果可能需要的话,它不容易修改。
编辑:表格驱动的方法看起来像(语法可能有点偏离 - 我最近主要完成了C ++):
int outputs[] = { 0, 0, 0, 1, 0, 1, 1, 1};
return outputs[a<<2 | b << 1 | c];