- 1、本文档共30页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
08届(设计)论文
题 目 专业班级 信息与计算科学(1)班 学 号 16 学生姓名 指导教师 指导教师职称 学院名称 理学院
完成日期: 20年 月日
关键词:本文个命题变元的命题公式的真值表的C++算法。全文共3章。
第1章介绍了第2章武汉工程大学理学院第1章 课题背景
1.1背景
设为含有命题变元的命题公式,给一组确定的取值,称为公式关于的一组真值指派。含有个命题变元的公式有组不同的真值指派,对于每一组真值指派,公式都有一个确定的真值(一般用“0”表示假,“1”表示真)。公式与其命题变元之间的真值关系可以用真值表的方法方便的表示出来。
1.2 性质
含有个命题变元的公式有组不同的真值指派,对于每一组真值指派,公式都有一个确定的真值(一般用“0”表示假,“1”表示真)。
1.3 意义
使用计算机来完成各种复杂的真值表计算,尤其是当命题变元增多时,对应的取值成指数增长,计算量也指数增长,紧靠人很难完成。应用计算机强大的计算能力,可以又好又快的完成任意命题公式的真值表的计算。
1.4 实验数据与结果
实验时,本文主要是用编写的程序计算参考资料[1]上的相关命题公式来验证相关算法的正确性,稳定性。
由程序计算得出的命题公式的真值表:
[1]上236页给出的答案:
000 1 1 0 0 001 1 1 1 1 010 0 0 1 0 011 0 0 1 0 100 0 1 0 0 101 0 1 1 0 110 1 0 1 1 111 1 0 1 1 二者除命题变元取值顺序不一样外,最后的真值结果完全吻合,表明算法的正确性、稳定性。
1.5 文献综述
文[1]介绍了命题变元与命题公式真值表的相关知识。
文[2]介绍了C++程序设计基础知识。
文献[3]提供了C++面向对象的程序设计相关知识。
第2章 问题的分析与算法的实现
2.1 问题的分析
对于含有个命题变元的公式有组不同的真值指派,对于每一组真值指派,公式都有一个确定的真值(这里“0”表示假,“1”表示真)。为了枚举出所有的情形,须用重for循环,为了使程序具有通用性,的取值是不确定的。这时,使用递归的算法就较方便。
给命题变元赋值的问题解决后,还得解决计算问题,在这里,本文采用面向对象的方法,通过运算符的重载来完成相关计算。定义了类Proposition,它包括两个变量——命题变元名和命题变元的真值,和相关成员函数、需重载的运算符。
再设计计算真值的函数,考虑到命题公式中可能会出现括号,改变了运算的优先级,本文同样采用递归的算法,当遇到括号时,把括号里面的部分作为一个命题公式来计算,再把结果作为一个命题变元放到整个命题公式进行计算,而当遇到相关的运算符时,重载运算符进行计算。最后返回真值。
最后,主函数只需完成输入并存储命题变元与命题公式,调用赋值函数就行了。
由以上方法可以进行真值的运算,但程序冗余太长,再对其进行优化处理,用另一函数来代替大量重复的代码,使程序更简洁。
2.2算法的实现
定义命题变元类Proposition:
class Proposition
{
int data;char data1; //data:命题的真值(0/1) data1:命题名
public:
Proposition(){data=2;data1=A;};
friend Proposition operator !(Proposition q); //定义否定运算符!
friend Proposition operator (Proposition p,Proposition q);//定义合取运算符
friend Proposition operator |(Proposition p,Proposition q);//定义析取运算符|
friend Proposition operator (Proposition p,Proposition q);//定义蕴含运算符
friend Proposition operator (Proposition p,Proposition q);//定义等值运算符
void input1(int x){data=x;} //输入data
void input2(char x){data1=x;} //输入data1
int get(){return data;} //获取真值
int get1(){return data1;} //获取命题名
};
Proposition operator !(Propos
文档评论(0)