「离散数学」 打印任意命题公示的真值表和主范式

本文介绍了如何使用程序自动分析并生成命题公示的真值表,同时给出了主析取范式和主合取范式。程序支持最多256个变元,算法涉及中缀转后缀表达式、后缀表达式求值及二进制加法模拟。示例包括课本《离散数学及其应用》中的例题。
摘要由CSDN通过智能技术生成

课本是高等教育出版社出版的《离散数学及其应用》。

程序会自动分析输入的表达式,并且列出真值表,最后打印出主析取范式和主合取范式,最多支持256 个变元。

主要用到的算法:中缀表达式转后缀表达式、后缀表达式求值还有一个二进制加法模拟。


下面上2 个图,第一个是表达式开头没有非运算的(课本P85 例3.5.5):


第二个不但表达式开头有非运算,而且非运算之后并不是一个数值,而是一个操作符(课本P83 例3.5.4):


下面是代码,如果CSDN 的编辑器弄乱了就将就着看吧,本来代码的缩进和排版都是整洁的。

file:///main.c

/* main.c
 * use MinGW Developer Studio to compile
 * by iSpeller (shell_way@foxmail.com)
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>

#define _BUF_LEN	(1<<10)
#define _STACK_LEN	(_BUF_LEN/2)
#define _PROP_LEN	(1<<7)

#define VOID_NUM	(0)	/* 不存在的运算数 */
typedef char *	string;
typedef int		data_t;
typedef int		bool_t;
#define TRUE		(1)
#define FALSE		(0)

/* 范式类型,	     析取,     合取 */
enum paradigm   { EXTRACT, CONJUNCT, };
/* 优先级大小		  等于,	 小于,     大于 */
enum priorities	{ EG=0, NGE=-1, NLE=1, };
/* 联结词(包括英文圆括号)优先级,全真 */
/* 	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值