离散数学之逻辑运算和命题公式真值表
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
b=b;
else
b=1;
cout<<a<<" "<<b<<" "<<hequ(a,b)<<" "<<xiqu(a,b)<<" "<<tiaojian(a,b)
<<" "<<shuangtiaojian(a,b)<<" "<<Pfaoding(a)<<endl;
return 0;
}
2、任意一个命题Hale Waihona Puke Baidu式的真值表
实现任意输入公式的真值表计算。一般我们将公式中的命题变元放在真值表的左边,将公式的结果放在真值表的右边。命题变元可用数值变量表示,合适公式的表示及求真值表转化为逻辑运算结果;可用一维数表示合式公式中所出现的n个命题变元,同时它也是一个二进制加法器的模拟器,每当在这个模拟器中产生一个二进制数时,就相当于给各个命题变元产生了一组真值指派。算法逻辑如下:
}
int Pfaoding(int P)
{
if(P==0)
P=P;
else
P=1;
return(!P);
}
int show(int a,int b)
{
cout<<"P Q P∧Q P∨Q P→Q P←→Q┐P"<<endl;
if(a==0||a==1)
a=a;
else
a=1;
if(b==0||b==1)
int shuangtiaojian(int P,int Q);
int Pfaoding(int P);
int show(int a,int b);
cout<<"请输入P和Q的真值:\n";
cin>>a>>b;
show(a,b);
return 0;
}
int hequ(int P,int Q)
{
if(P==0)
for(int q=0;q<2;q++)
for(int r=0;r<2;r++)
{
cout<<p<<" "<<q<<" "<<r<<" "<<hequ(p,q)<<" "<<hequ(p,r)<<" "
<<hequ(Pfaoding(p),r)<<" "<<
xiqu(hequ(p,q),hequ(Pfaoding(p),r))<<endl;
{
int show();
show();
return 0;
}
int hequ(int P,int Q)
{
return(P&Q);
}
int xiqu(int P,int Q)
{
return(P|Q);
}
int tiaojian(int P,int Q)
{
if(P==1&&Q==0)
return(0);
else
1、逻辑联接词的运算
从键盘输入两个命题变元P和Q的真值,输出它们的合取、析取、条件、双条件和P的否定的真值。
#include <iostream.h>
int main()
{
int a,b;
int hequ(int P,int Q);
int xiqu(int P,int Q);
int tiaojian(int P,int Q);
}
return 0;
}
(1)将二进制加法模拟器赋初值0
(2)计算模拟器中所对应的一组真值指派下合式公式的真值。
(3)输出真值表中对应于模拟器所给出的一组真值指派及这组真值指派所对应的一行真值。
(4)产生下一个二进制数值,若该数值等于2n-1,则结束,否则转(2)。
#include <iostream.h>
int main()
return(1);
}
int shuangtiaojian(int P,int Q)
{
return(!P^Q);
}
int Pfaoding(int P)
{
return(!P);
}
int show()
{
cout<<"P Q R P∧Q P∧R┐P∧R (P∧Q)∨(┐P∧R)"<<endl;
for(int p=0;p<2;p++)
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
if(P==1&&Q==0)
return(0);
else
return(1);
}
int shuangtiaojian(int P,int Q)
{
if(P==0)
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
return(!P^Q);
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
return(P&Q);
}
int xiqu(int P,int Q)
{
if(P==0)
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
return(P|Q);
}
int tiaojian(int P,int Q)
{
if(P==0)
else
b=1;
cout<<a<<" "<<b<<" "<<hequ(a,b)<<" "<<xiqu(a,b)<<" "<<tiaojian(a,b)
<<" "<<shuangtiaojian(a,b)<<" "<<Pfaoding(a)<<endl;
return 0;
}
2、任意一个命题Hale Waihona Puke Baidu式的真值表
实现任意输入公式的真值表计算。一般我们将公式中的命题变元放在真值表的左边,将公式的结果放在真值表的右边。命题变元可用数值变量表示,合适公式的表示及求真值表转化为逻辑运算结果;可用一维数表示合式公式中所出现的n个命题变元,同时它也是一个二进制加法器的模拟器,每当在这个模拟器中产生一个二进制数时,就相当于给各个命题变元产生了一组真值指派。算法逻辑如下:
}
int Pfaoding(int P)
{
if(P==0)
P=P;
else
P=1;
return(!P);
}
int show(int a,int b)
{
cout<<"P Q P∧Q P∨Q P→Q P←→Q┐P"<<endl;
if(a==0||a==1)
a=a;
else
a=1;
if(b==0||b==1)
int shuangtiaojian(int P,int Q);
int Pfaoding(int P);
int show(int a,int b);
cout<<"请输入P和Q的真值:\n";
cin>>a>>b;
show(a,b);
return 0;
}
int hequ(int P,int Q)
{
if(P==0)
for(int q=0;q<2;q++)
for(int r=0;r<2;r++)
{
cout<<p<<" "<<q<<" "<<r<<" "<<hequ(p,q)<<" "<<hequ(p,r)<<" "
<<hequ(Pfaoding(p),r)<<" "<<
xiqu(hequ(p,q),hequ(Pfaoding(p),r))<<endl;
{
int show();
show();
return 0;
}
int hequ(int P,int Q)
{
return(P&Q);
}
int xiqu(int P,int Q)
{
return(P|Q);
}
int tiaojian(int P,int Q)
{
if(P==1&&Q==0)
return(0);
else
1、逻辑联接词的运算
从键盘输入两个命题变元P和Q的真值,输出它们的合取、析取、条件、双条件和P的否定的真值。
#include <iostream.h>
int main()
{
int a,b;
int hequ(int P,int Q);
int xiqu(int P,int Q);
int tiaojian(int P,int Q);
}
return 0;
}
(1)将二进制加法模拟器赋初值0
(2)计算模拟器中所对应的一组真值指派下合式公式的真值。
(3)输出真值表中对应于模拟器所给出的一组真值指派及这组真值指派所对应的一行真值。
(4)产生下一个二进制数值,若该数值等于2n-1,则结束,否则转(2)。
#include <iostream.h>
int main()
return(1);
}
int shuangtiaojian(int P,int Q)
{
return(!P^Q);
}
int Pfaoding(int P)
{
return(!P);
}
int show()
{
cout<<"P Q R P∧Q P∧R┐P∧R (P∧Q)∨(┐P∧R)"<<endl;
for(int p=0;p<2;p++)
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
if(P==1&&Q==0)
return(0);
else
return(1);
}
int shuangtiaojian(int P,int Q)
{
if(P==0)
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
return(!P^Q);
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
return(P&Q);
}
int xiqu(int P,int Q)
{
if(P==0)
P=P;
else
P=1;
if(Q==0)
Q=Q;
else
Q=1;
return(P|Q);
}
int tiaojian(int P,int Q)
{
if(P==0)