命题逻辑推理

命题逻辑推理
(1)实现命题逻辑的语法检查功能:合式公式的判定
(2)判断命题公式是否可满足;
(3)判断命题公式的蕴含关系是否成立。
参考链接:C语言中缀表达式转后缀表达式
离散数学判断合式公式,并打印真值表、求主析取、主合取范式

#include<iostream>
#include<stdio.h>
#include <set>
#include <map>
#include <windows.h>
#include <stack>
using namespace std;
stack<char> s3;//栈s3存储后缀表达式
map<char, bool>ch;//映射表示原子命题真假
set<char>sh;//统计原子命题
//定义联结词优先次序
//case '!':return 5; break;
//case '&':return 4; break;
//case '|':return 3; break;
//case '-':return 2; break;
//case '=':return 1; break;
int Compare(char str1) {
   
	if (str1 == '!') {
   
		return 5;
	}
	else if (str1 == '&') {
   
		return 4;
	}
	else if (str1 == '|') {
   
		return 3;
	}
	else if (str1 == '-') {
   
		return 2;
	}
	else if (str1 == '=') {
   
		return 1;
	}
	else if (str1 == '(' || str1 == ')') {
   
		return 0;
	}
	else {
   
		return -1; //字母或者数字 
	}
}
bool Fouding(bool a)//否定运算
{
   
	if (a)return false;
	else return true;
}
bool And(bool a, bool b)//合取
{
   
	if (!a || !b)return false;
	else return true;
}
bool Or(bool a, bool b)//析取
{
   
	if (a || b)return true;
	else return false;
}
bool One(bool a, bool b)//条件
{
   
	if (a && !b)return false;
	else return true;
}
bool Two(bool a, bool b)//双条件
{
   
	if (a == b)return true;
	else return false;
}

void appoint(int num)
{
   
	for (set<char>::iterator it 
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值