离散实验二 等值演算 (通过编程验证等值演算的结果)

附上运行截图:

附上代码:


 

#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;

}

下面总结一下上面的代码:

 这次实验中我改编了实验一代码进行了两次输入和处理操作,然后将两次的处理结果用两个数组分别存储,然后在最后比较两个数组是否一样,若一样,则代表两式真值完全一样,输出“两式等价”。若数组不一样,则代表两式真值不一样,输出“两式不等价”。由于实验一代码可以对任意三种变量的所有情况进行处理,所以本次实验代码可以对任意两个关系式进行真值比较。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值