在输入任何一个合式公式后,该段程序就会自动检测里面的命题变元,并要求为之输入真假值,
在输入完毕后就会得出该合式公式的真假值,运用的是递归的思想。
----------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;