C++实现离散数学中求合式表达式

这段C++程序接收用户输入的合式公式,使用递归方法解析并求解命题变元的真假值,最终得出合式公式的真值。适合学习离散数学和C++编程的学生参考。
摘要由CSDN通过智能技术生成

在输入任何一个合式公式后,该段程序就会自动检测里面的命题变元,并要求为之输入真假值,

在输入完毕后就会得出该合式公式的真假值,运用的是递归的思想。

----------YYC



#include<iostream>

#include<string>
#include<map>
using namespace std;
/*
*说明:
*     用!表示 否定
*     用& 表示 合取
*     用| 表示 析取
*     用- 表示 条件
*     用~ 表示 双条件
*/
map<char ,int > value_map;
int value=0;
string expr;
//真值转换函数
void change_val(int & s)
{
if(0==s)
s=1;
else
s=0;
}


//处理基本连接词的函数
int deal_cal(int par1,char  par2,int par3)
{   // cout<<par2<<endl;
switch(par2)

 case '&'://合取
 return par1&&par3;
 break;
 case '|'://析取
 return par1||par3;
    break;
 case '-'://条件
 return !(par1==1&&par3==0);
    break;
 case '~'://双条件
 return (par1==par3);
    break;
 default:
 cout<<"有某些命题的真值错误"<<endl;
 break;
}


}


//没有括号的表达式处理函数
int run_unkh_expr( string & str)
{


int a;
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值