资源描述:
《数据结构与算法课程设计报告--真值表的设计与实现》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、数据结构与算法课程设计报告真值表的设计与实现(注:本程序于VS2008中编译运行并测试,VC6.0中运行不保证正常运行)1、问题描述:对给出的任意一个合式公式(不超过四个命题变元),用C++语言的程序编程表示出来,并且能够计算它在各组真值指派下所应有的真值,画出其真值表。基本要求:(1)已知命题p和q的真值,求出它们的合取、析取、蕴涵和等价的真值;(2)表示出合式公式;(3)给出任意一个合式公式(不超过四个命题变元),设计程序把它表示出来,并且能够计算它在各组真值指派下所应有的真值(或是逻辑运算的结果)。提高要求:
2、构造任意合式公式的真值表2、需求分析:命题公式;真值表;类;运算符重载;递归;字符串软件的基本功能:对给出的任意一个合式公式(不超过四个命题变元),能够计算它在各组真值指派下所应有的真值,并画出其真值表。测试数据要求:1)给出命题p和q的真值,求合取、析取、蕴涵和等价的真值;2)给出任意一个合式公式(不超过四个命题变元)3)错误提示不明显需测试者核对输入公式准确性。3、详细设计:定义命题变元类Proposition:classProposition{intdata;chardata1;//data:命题的真值(0/
3、1)data1:命题名public:Proposition(){data=2;data1='A';};friendPropositionoperator!(Proposition&q);//定义否定运算符!friendPropositionoperator&(Proposition&p,Proposition&q);//定义合取运算符&friendPropositionoperator
4、(Proposition&p,Proposition&q);//定义析取运算符
5、friendPropositionoperator
6、>(Proposition&p,Proposition&q);//定义蕴含运算符>voidinput1(intx){data=x;}//输入datavoidinput2(charx){data1=x;}//输入data1intget(){returndata;}//获取真值intget1(){returndata1;}//获取命题名};Propositionoperator!(Proposition&q){q.input1(1-q.get());returnq;}Propositionoperator&(Propo
7、sition&p,Proposition&q){p.input1((p.get()+q.get())/2);returnp;}Propositionoperator
8、(Proposition&p,Proposition&q){if(p.get()+q.get()>0)p.input1(1);elsep.input1(0);returnp;}Propositionoperator>(Proposition&p,Proposition&q){if(p.get()==1&&q.get()==0)p.input1(0);e
9、lsep.input1(1);returnp;}Propositionoperator<(Proposition&p,Proposition&q){if(p.get()==q.get())p.input1(1);elsep.input1(0);returnp;}其中函数voidinput1(intx)用于输入命题变元的真值,函数voidinput2(charx)用于输入命题名,intget()与intget1()分别用于获取命题真值和命题名,运算符重载部分由[1]中的知识得出。给命题变元赋值(voidfuzhi(s
10、tringA,intN,intM,Propositiona[])):for(intj=0;j<2;j++){a[N-1].input1(j);if(N>1){fuzhi(A,N-1,M,&a[0]);}else{for(inti=0;i11、输入的表达式并计算真值(intbds(stringA,intN,Propositiona[])):PropositionANS,Temp;chard[4]={'!','
12、','&','>'};intL;inti=0;L=strlen(&A[0]);//计算表达式长度while(i