构造任意合式公式的真值表

mukai520 2004-12-11 11:26:12
构造任意合式公式的真值表
A)功能
给出任意变元的合式公式,要求构造该合式公式的真值表。
B)基本思想
我们仍然用数值变量来表示命题变元。合式公式的表示及求真值的方法采用1.2 中所采用的方法,并在程序计算之前将转换后的合式公式输入到本程序200语句中条件位置上。另外,我们使用一维数组A(N)来表示合式公式中所出现的n个命题变元。例如合式公式:
(P∨Q)∧((P∨R) ∨S)应表示成以下语句:
200 IF NOT (A(1)=1 OR A(2)=1)AND ((A(1)=1 OR A(3)=1) OR A(4)=1) THEN Z=1 ELSE Z=0
其中,一维数组A(N)除了表示n 个命题变元,它还是一个二进制加法器的模拟器,每当在这个模拟器中产生一个二进制数时,就相当于给各命题变元产生了一组真值指派。其中数值1表示真值真,而0表示值假。
C)算法
(1) 将二进制加法器模拟器A(N)赋初值。0 ai (i=1,2,….,n)。
(2) 计算模拟器中所对应的一组真值指派下合式公式的真值(200语句)。
(3) 输出真值表中对应于模拟器所给出的一组真值指派及这组真值指派所对应的一行真值。
(4) 在模拟器A(N),模拟的产生下一个二进制数值。
(5) 若A(N)中的数值等于2n,则结束,否则转(2)。

...全文
935 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mukai520 2004-12-22
  • 打赏
  • 举报
回复
谢谢
mukai520 2004-12-11
  • 打赏
  • 举报
回复
谢谢;
多给点提示行吗?
masse 2004-12-11
  • 打赏
  • 举报
回复
首先应该构思如何解析表达式
剩下的就简单了
这个和做四则混和运算的计算器差不多
dot99 2004-12-11
  • 打赏
  • 举报
回复
也。作业。。。。。。
masse 2004-12-11
  • 打赏
  • 举报
回复
比如解析表达式(P∨Q)∧((P∨R) ∨S)

你就要先算括号里面的东西,然后看运算符的优先级
当时我在解析四则混合运算表达式的时候是用了树的原理
比如(a+b)*c-d/e

扫描一遍表达式,去掉冗余的括号,然后建立一棵树
根结点是从右到左 非括号的低优先级的运算符,也就是-号
最后的树是以操作符号为节点,操作数为叶子的
建立的树如下:

'-'
/ \
'*' '/'
/\ /\
+ c d e
/\
a b

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧