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

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造任意合式公式的真值表

构造任意合式公式的真值表 #include stdio.h #includethesis.h int main() { Thesis a[30]; char x=1; int i=0,N; cout请输入命题变元(不超过30个)(输入0结束输入):endl; while(int(x)!=48) { cinx; if(i19) {coutError:变元个数太多!endl;break;} if(x!=0) { a[i].inname(x); i++; } } N=i; int M; M=N; string A; cout请输入命题公式( 否定:!,合取:,析取:| )endl; cinA; coutA的真值表为:endl; for(int j=0;jM;j++) coutchar(a[j].getvalue()) ; cout真值endl; assignment(A,N,M,a[0]); system(pause); return 0; } #includethesis.h #ifndef THESIS_H #define THESIS_H #includestring #includestdlib.h #includeiostream using 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()==1q.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;} //输入value void inname(char x){name=x;} //输入name int 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;j2;j++) { a[N-1].invalue(j); if(N1) { assignment(A,N-1,M,a[0]); } else { for(int i=0;iM;i++) { couta[i].getvalue() ; } coutbds(A,M,a[0])endl; } } } int bds(string A,int N,Thesis a[]) //识别输入的表达式并计算真值 { Thesis answer,Temp; char d[5]={!,

文档评论(0)

pangzilva + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档