欢迎来到天天文库
浏览记录
ID:13408780
大小:1.02 MB
页数:101页
时间:2018-07-22
《计算逻辑表达式真值和通用试题库设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据结构课程设计报告数据结构课程设计报告班级:191131班学号:20131000806姓名:指导老师:日期:2015/07/13数据结构课程设计报告题号9题目:计算命题演算公式的真值所谓命题演算公式是指由逻辑变量(其值为TRUE或FALSE)和逻辑运算符∧(AND)、∨(OR)和┐(NOT)按一定规则所组成的公式(蕴含之类的运算可以用∧、∨和┐来表示)。公式运算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。已知一个命题演算公式及各变量的值,要求设计一个程序来计算公式的真值。要求:(1)程序运行有菜单选择。(2)利用二叉树来计算公式的真值。
2、首先利用堆栈将中缀形式的公式变为后缀形式;然后根据后缀形式,从叶结点开始构造相应的二叉树;最后按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值。(3)逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串。(4)根据用户的要求显示表达式的真值表。1.需求分析1)由逻辑变量(其值为TRUE或FALSE)【实际操作使用,0代表FALSE,1代表TRUE)】和逻辑运算符∧(AND)、∨(OR)和┐(NOT)【实际操作使用&代表AND,
3、代表OR,~代表NOT】按一定规则所组成的公式。公式运
4、算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。输入输出2)以人机对话的方式让用户输入要计算的命题表达式;计算出最后的真值并输到屏幕上。基本思想:①利用二叉树计算公式的真值:第一步:利用堆栈将中缀形式的公式变为后缀形式;第二步:根据后缀形式,从叶结点开始构造相应的二叉树;第三步:按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值;②逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串;③根据用户的要求显示表达式的真值表。数据结构课程设计报告2.设计程序入口概要设计:等待用户输入
5、有误检查输入是否有错误无误将中辍表达式转化为后缀表达式借助后缀表达式构造二叉树打印二叉树根据变量真值计算表达式真值否是否退出是退出程序2.1设计思想(1)数据结构设计包括逻辑结构设计和存储结构设计数据结构课程设计报告用于中辍转换后缀的栈结构:抽象为模板类:templateclassStack{public:Stack(){};~Stack(){};voidPush(constType&item);TypePop(void);TypeTop(void)const;boolIsEmpty(void)const;privat
6、e:std::vectorm_Items;};数据结构课程设计报告用于从后缀表达式计算真值的二叉树如算式:(abc*def)
7、(gh123&(as45
8、qw45))转化后构造的二叉树如下:二叉树抽象为:classBitree//二叉树类{private:BitreeNode*m_Root;voidPrint(BitreeNode*node,intlevel)const;数据结构课程设计报告voidDestroy(BitreeNode*&node);public:Bitree();~Bit
9、ree();voidVisit(BitreeNode*node)const;voidPrint()const;voidDestroy();voidMakeBitree(myData&data,BitreeNode*&left,BitreeNode*&right,BitreeNode*&parent,boolsym);voidMakeBitree(BitreeNode*&root);boolIsEmpty()const;};(2)算法设计中缀表达式变成后缀表达式:voi
10、dFomula::Transfer();在将中缀表达式变成后缀表达式的时候会用到堆栈,因此首先需要初始化一个堆栈。又由于逻辑变元可能是字符也可能是字符串,所以它又不同于将单字符的逻辑变元的中缀表达式变成后缀表达式。我的设计是这样的,我将中缀表达式变成后缀表达式的过程分成了两部:化简(将一维的复杂的中缀表达式变成一维的简单的中缀表达式,并将字符串逻辑变元存放在二维数组中),转化(将化简后的中缀表达式变成后缀表达式)。后缀表达式构造出二叉树:voidFomula::MakeBitree(void)在这个过程中,我用到了之前所定义的存放树的堆栈。具体实
11、现为:扫描后缀表达式,如果遇到逻辑变元然后将这个变元变成一个树节点,它的实现就是将该逻辑变元赋给树的data域,然后将它的左右子树赋为N
此文档下载收益归作者所有