- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)