离散数学_真值表_C++实现

这篇博客灵感来源于《栈的应用——四则运算表达式求值》,介绍了使用C++来实现离散数学中的真值表计算。博主对代码进行了详细注释,旨在帮助读者理解并欢迎指出可能存在的错误和不足。

离散数学__真值表__C++实现__析取,合取,非,条件,双条件

灵感来源——《栈的应用——四则运算表达式求值》

这个网上文章怪多的,就不赘述了。

博客园 :Been_You1997 优快云:宝宝丶0807
https://www.cnblogs.com/didideblog/p/7096396.html https://blog.youkuaiyun.com/lub0807/article/details/37884417

代码如下

已对代码进行尽可能的注释,希望对你有帮助

因为本人才疏学浅,若有错误及不足之处,欢迎指正
在这里插入图片描述

#include<iostream>
#include<string>

using namespace std;

class TrueValueTable
{
   
   
private:
	char str[40] = {
   
    '\0' };// 输入的字符的备份
	char str2[40] = {
   
    '\0' };// 后缀表达式
	char strOfStack[40] = {
   
    '\0' };// 栈数组
	char proposition[10] = {
   
    '\0' };// 命题元素
	int sizeOfStr = 0;
	int sizeOfStr2 = 0;
	int sizeOfStack = 0;
	int sizeOfProposition = 0;
	int priority = 5; // 栈顶元素的优先值
	bool trueOrFalse[10] = {
   
    0 };// 命题元素的真假值


public:
	// 输入字符串,并制作备份
	TrueValueTable(const string& strIn)
	{
   
   
		// 将输入的字符串,拷贝到类中,避免更改原字符串后影响后续工作
		for (int i = 0; i < 40 && i < strIn.length(); i++)
		{
   
   
			str[i] = strIn[i];
			sizeOfStr++;
		}
		GetProposition();
	}

	// 获取命题元素
	void GetProposition()
	{
   
   
		bool have = 0;// 用来保存遍历数组时,是否存在同名的命题元素名称
		for (int i = 0; i < sizeOfStr; i++)
		{
   
   
			have = 0;
			if (str[i] >= 'a' && str[i] <= 'z')
			{
   
   
			// 遍历数组,确定字符串中的命题元素是否已经保存至数组proposition
				for (int j = 0; j < sizeOfProposition; j++)
					if (str[i] == proposition[j])
						have = 1;
			// 若不存在,则保存至数组中
				if (!have)
					proposition[sizeOfProposition++] = str[i];
			// 此处可为了命题元素有序,进行一此命题元素(a,b,c,d....)的排序
			// 命题元素的顺序,不会影响到其表达式的计算
			// 除写排序算法外不需做任何更改
			/*此处*/;
			}
		}
	}

	// 将中缀表达式转换为后缀表达式
	void InfixTransSuffix()
	{
   
   
		// 中缀表达式转后缀表达式这个你们自己参考文章
		// 自认为写的不好 -_- 抱歉
		for (int i = 0; i < sizeOfStr;)
			if (str[i] <= 'z' 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值