【发布时间】:2016-05-18 11:05:21
【问题描述】:
我正在尝试将真值表的结果转换回布尔语句。 对于不熟悉的人,我将详细写它。
我有一个字符串向量,格式如下。向量内的所有字符串成员都具有相等的长度。成员仅由- 或0 或1 组成。
例如向量 v 包含 3 个成员,每个成员的长度为 5。
string vv[] = { "--1-0" , "-1-1-" , "01-1-" };
std::vector<string> v(begin(vv), end(vv));
字符串的每个字符代表另一个向量“A”成员以及一个布尔运算。例如,
第一个--1-0 是(A[2] && !A[4])
我想将上面的矢量v 转换成
(A[2] && !A[4]) || (A[1] && A[3] ) || (!A[0] && A[1] && A[3])
我想要做的是有一个以向量v 和A 作为输入的函数,并且返回高于布尔语句。我相信你已经注意到1 是true,0 是Not true 和- 是不关心状态。
编辑:我不打算求解真值表或 Kmap。我已经有了结果。我的结果采用“v”向量的格式。我想使用布尔语句创建 V 和 A 之间的链接。
感谢任何建议。
【问题讨论】:
-
字符串“-----”的结果是真是假?
-
'-----' 什么都不是。如果它出现在其他字符串上,则等于什么都不做联合。
-
Karnaugh maps 状态为 {true, false, any} 通常可能很有趣。
-
您想要语句(作为代码字符串)还是使用布尔输入向量评估语句的结果?如果它说
vv[] = { "-----" , "-----" , "-----" };,您仍然必须说出基本情况是什么然后您完全没有使用来自A的输入。您可以“取消定义它”(并说您不在乎返回结果是什么,所以实现可以是 true 或 false 方便),或者说它应该是一个错误,或者有一个特殊的“它既不是 true 也不是 false”返回结果(也许返回值本身与1或0或-而不是真/假)。 -
@HostileFork 我想要评估语句的结果。我确定向量V里面没有“-----”,所以不需要关心特殊情况。
标签: c++ c++11 vector truthtable