附上运行截图:
附上代码:
#include <iostream>
#include <cstdio>
using namespace std;
void printtitle(char a,char b,char c,int one,int two)
{
printf("%c %c %c %c",a,b,c,a);
switch(one)
{
case 0:printf("~%c",b);break;
case 1:printf("^%c",b);break;
case 2:printf("\\/%c",b);break;
case 3:printf("->%c",b);break;
case 4:printf("<->%c",b);break;
}
switch(two)
{
case 0:printf("~%c\n",c);break;
case 1:printf("^%c\n",c);break;
case 2:printf("\\/%c\n",c);break;
case 3:printf("->%c\n",c);break;
case 4:printf("<->%c\n",c);break;
}
}
int yunsuan(int p,int q,int connective)
{
if(connective==1)
{
return p*q;
}
else if(connective==2)
{
return ((p+q)/2+(p+q)%2);
}
else if(connective==3)
{
if(p==0)
return 1;
else
{
if(q==1)
return 1;
else
return 0;
}
}
else if(connective==4)
{
if(p==q)
return 1;
else
return 0;
}
}
int main()
{
char a,b,c,d,e,f;
int s[100],x[100];
int count1=0,count2=0;
int m,n,p,q;
cout<<"逻辑联结词选择:“与”请输入1,“或”请输入2,“蕴涵”请输入3,“双向蕴涵”请输入4!"<<endl;
cout<<"输入第1个变量:"; cin>>a;
cout<<"输入第一个逻辑连接词:"; cin>>m;
cout<<"输入第2个变量:"; cin>>b;
cout<<"输入第二个逻辑连接词:"; cin>>n;
cout<<"输入第3个变量:"; cin>>c;
printtitle(a,b,c,m,n);
int i,j,k;
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
for (k=0;k<2;k++)
{
printf("%d %d %d ",i,j,k);
if(m<=n)
{
s[count1]=yunsuan(yunsuan(i,j,m),k,n);
count1++;
cout<<yunsuan(yunsuan(i,j,m),k,n)<<endl;
}
else
{
s[count1]=yunsuan(i,yunsuan(j,k,n),m);
count1++;
cout<<yunsuan(i,yunsuan(j,k,n),m)<<endl;
}
}
}
}
cout<<"请输入第二个表达式:"<<endl;
cout<<"输入第1个变量:"; cin>>d;
cout<<"输入第一个逻辑连接词:"; cin>>p;
cout<<"输入第2个变量:"; cin>>e;
cout<<"输入第二个逻辑连接词:"; cin>>q;
cout<<"输入第3个变量:"; cin>>f;
printtitle(d,e,f,p,q);
for (i=0;i<2;i++)
{
for (j=0;j<2;j++)
{
for (k=0;k<2;k++)
{
printf("%d %d %d ",i,j,k);
if(p<=q)
{
x[count2]=yunsuan(yunsuan(i,j,p),k,q);
count2++;
cout<<yunsuan(yunsuan(i,j,p),k,q)<<endl;
}
else
{
x[count2]=yunsuan(i,yunsuan(j,k,q),p);
count2++;
cout<<yunsuan(i,yunsuan(j,k,q),p)<<endl;
}
}
}
}
int flag=0;
for(int t=0;t<8;t++)
{
if(s[t]!=x[t])
{
flag=1;
break;
}
}
if(flag == 1)
cout<<"两式不等价";
else
cout<<"两式等价";
return 0;
}
下面总结一下上面的代码:
这次实验中我改编了实验一代码进行了两次输入和处理操作,然后将两次的处理结果用两个数组分别存储,然后在最后比较两个数组是否一样,若一样,则代表两式真值完全一样,输出“两式等价”。若数组不一样,则代表两式真值不一样,输出“两式不等价”。由于实验一代码可以对任意三种变量的所有情况进行处理,所以本次实验代码可以对任意两个关系式进行真值比较。