第7关:求命题公式的真值表

该博客主要介绍如何编写程序来生成命题公式的真值表。内容涉及命题联接词的真值定义、命题变元的真值指派顺序、真值表的构造方法以及命题变元真值指派的生成算法。通过示例展示了如何处理中缀式命题公式并输出相应的真值表。

任务描述
本关任务:编写一个程序,打印给定命题公式的真值表。

相关知识
为了完成本关任务,你需要掌握:
1.五个命题联接词的真值定义
1.列真值表时命题变元的排序顺序,真值指派的排列顺序
2.中缀式命题公式转换为后缀式命题公式
3.利用后缀式求特定真值指派下命题公式的真值
#####五个命题联接词的真值定义
为了输入方便,把教材中所使用的五个命题联接词符号(¬、 ∧、 ∨、→、↔),替换为(!、&、|、-、=)符号。其真值定义如下:

#####命题变元的真值指派
设p1,p2,…,pn是出现在公式A中的所有命题变元,给p1,p2,…,pn各指定一个真值,称为对公式A的一个真值指派(也称解释),用表格的形式按顺序列举出各真值指派之下,命题公式的真值,该表格可称之为命题公式的真值表。

真值表中命题变元真值指派的排列顺序
在列真值表时,命题变元按照符号的升序从左至右排列,命题变元的真值指派则按照二进制数的升序从上至下排列。
【例】命题公式:(┐p∧q)→┐r (即:(!p&q)-!r)的真值表派如下:
pqr (!p&q)-!r
000
001
010
011
100
101
110
111
#####命题变元真值指派的生成算法
在获取命题公式的所有命题变元后,按照字符升序顺序输出,并根据命题变元的个数n,利用n位数组存储n位二进制数,并模拟二进制逢二进一的加法规则,实现从
的变化,并输出。

【输入】
本题有多组测试数据。一行为一组测试数据,每组测试数据只包含!、&、|、-、= 、(、)等命题连接词与括号,以及用小写英文字母表示的命题变元组成的中缀式命题公式串(串中不含空格等其他字符),串的长度为N,且(1<=N<=100)
####【输出】
每个测试数据首行输出命题变元字典,与命题公式(两者中间插入6个空格字符做分隔)再输出n个命题变元的2的n次方个按二进制升序排列的真值指派,以在该真值指派之下命题公式的真值(两者中间插入6个空格字符做分隔),每组真值指派与命题公式真值占一行(行末尾不带空格)。
####【输入样例】
a|b
r&s
####【输出样例】
ab a|b
00 0
01 1
10 1
11 1
rs r&s
00 0
01 0
10 0
11 1

开始你的任务吧,祝你成功!
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值