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

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

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

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

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

博客园 :Been_You1997 CSDN:宝宝丶0807
https://www.cnblogs.com/didideblog/p/7096396.html https://blog.csdn.net/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' && str
离散数学真值表是用来表示逻辑表达式的值的一种推导方法。在离散数学中,逻辑表达式通常由命题变量和逻辑运算符组成。我们可以通过列举出不同命题变量的取值情况,以及根据逻辑运算符确定整个表达式的值。 要实现离散数学真值表,我们可以按照以下步骤进行: 1. 确定逻辑表达式:首先,我们需要确定要列举真值表的逻辑表达式。例如,我们可以选择一个包含多个命题变量和逻辑运算符的复杂表达式,比如 P∧Q→R。 2. 列举命题变量的取值:计算机程序可以通过循环的方式,对每个命题变量进行取值的列举。在这个例子中,我们可以使用两个命题变量 P 和 Q。对于每个命题变量,我们可以将其取值分别设定为 True 和 False。 3. 计算逻辑表达式的值:对于每组命题变量的取值情况,我们可以根据逻辑运算符计算整个表达式的值。在这个例子中,我们需要计算表达式(P∧Q)→R 的值。根据逻辑运算的定义,我们可以用真值表格来表示每个运算的结果。 4. 输出真值表:最后,我们可以将每组命题变量的取值以及对应的逻辑表达式的值输出为一个真值表。这样就完成了离散数学真值表实现。 总结起来,实现离散数学真值表的方法是通过列举命题变量的取值情况,然后根据逻辑运算符计算整个表达式的值,并将结果输出为一个真值表
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值