资源预览内容
第1页 / 共12页
第2页 / 共12页
第3页 / 共12页
第4页 / 共12页
第5页 / 共12页
第6页 / 共12页
第7页 / 共12页
第8页 / 共12页
第9页 / 共12页
第10页 / 共12页
亲,该文档总共12页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
精选优质文档-倾情为你奉上构造任意合式公式的真值表#include stdio.h#includethesis.hint main()Thesis a30;char x=1;int i=0,N;cout请输入命题变元(不超过30个)(输入0结束输入):x; if(i19)coutError:变元个数太多!endl;break;if(x!=0)ai.inname(x);i+;N=i;int M;M=N;string A;cout请输入命题公式( 否定:!,合取:&,析取:| )A;coutA的真值表为:endl;for(int j=0;jM;j+)coutchar(aj.getvalue() ;cout真值endl;assignment(A,N,M,&a0);system(pause);return 0;#includethesis.h#ifndef THESIS_H#define THESIS_H#include#include#includeusing namespace std;class Thesis /命题类 int value;char name; /value:命题的真值(0/1) name:命题名public:Thesis()value=2;name=A;friend Thesis operator !(Thesis &q) q.invalue(1-q.getvalue(); return q; /重载逻辑运算符 friend Thesis operator &(Thesis &p,Thesis &q)p.invalue(p.getvalue()+q.getvalue()/2); return p;friend Thesis operator |(Thesis &p,Thesis &q) if(p.getvalue()+q.getvalue()0) p.invalue(1); else p.invalue(0); return p;friend Thesis operator (Thesis &p,Thesis &q)if(p.getvalue()=1&q.getvalue()=0) p.invalue(0); else p.invalue(1); return p;friend Thesis operator (Thesis &p,Thesis &q) if(p.getvalue()=q.getvalue() p.invalue(1); else p.invalue(0); return p;void invalue(int x)value=x; /输入valuevoid inname(char x)name=x; /输入nameint getvalue()return value; /获取真值int getname()return name; /获取命题名;void assignment(string A,int N,int M,Thesis a); /声明函数 int bds(string A,int N,Thesis a);int run(string A,int &i,int L,int N,Thesis a);void assignment(string A,int N,int M,Thesis a)/命题赋值并计算真值for(int j=0;j1)assignment(A,N-1,M,&a0);elsefor(int i=0;iM;i+)coutai.getvalue() ;coutbds(A,M,&a0),; /定义运算符号集合 int L;int i=0;L=strlen(&A0); /表达式长度while(iL)if(Ai=() int k=1;for(int j=i+2;jL;j+)if(k!=0)if(Aj=()k+;if(Aj=)k-;if(k=0)int l=j-i-1;char *p=new charl+1;string B;for(int m=0;ml;m+)pm=Ai+1+m;pl=0;B=p;delete p;Temp.invalue(bds(B,N,&a0);if(i=0)answer.invalue(Temp.getvalue();i=j+1;break;elseif(Ai=!) /否定的计算Temp.invalue(run(A,i,L,N,&a0);answer=!Temp;i+;continue;else if(Ai=|)Temp.invalue(run(A,i,L,N,&a0);answer=answer|Temp;i+;continue;else if(Ai=&)Temp.invalue(run(A,i,L,N,&a0);answer=answer&Temp;i+;continue;else if(Ai=)Temp.invalue(run(A,i,L,N,&a0);answer=answer)Temp.invalue(run(A,i,L,N,&a0);answer=answerTemp;i+;continue;elsefor(int j=0;jN;j+)if(Ai=char(aj.getname()Temp.invalue(aj.getvalue();if(i=0)answer.invalue(Temp.getvalue();i+;break;return answer.getvalue();int run(string A,int &i,int L,int N,Thesis a)Thesis Temp;if(Ai+1=()int k=1;for(int j=i+2;jL;j+)if(k!=0)if(Aj=()k+;if(Aj=)k-;if(k=0)int l=j-i-1;char *p=new charl+1;string B;for(int m=0;ml-1;m+)pm=Ai+2+m;pl-1=0;B=p;delete p;Temp.invalue(bds(B,N,&a0);i=i+j;break;elseint j=0;while(jL)if(Ai+1=char(aj.getname()i+;Temp=aj;break;j+;return Temp.getvalue();#endif专心-专注-专业
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号