网站大量收购独家精品文档,联系QQ:2885784924

实习报告重言式的判别.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实习报告重言式的判别

实习报告 题目:重言式的判定 班级:信管08-1 姓名:彭苗苗 完成日期:2010/ 6 /7 一、需求分析 1.一个逻辑表达式如果对于其变元的任一种取值均为真,则成为重言式;反之,如果对于其变元的任一种取值都为假,则称为矛盾式,然而,更多的情况下,既非重言式,也非矛盾式。写一个程序通过真值表判别一个逻辑表达式属于上述哪一类。基本要求如下: (1)逻辑表达式从终端输入,长度不超过一行。逻辑运算符包括“|”、“&”和“~”,分别表示或、与和非,运算优先程度递增,但可有括号改变,即括号内的运算优先。逻辑变元为大写字母。表达式中任何地方都可以含有多个空格符。 (2)若是重言式或矛盾式,可以只显示“True Forever”或“False Forever”,否则显示“Statisfactible”以及变量名序列,与用户交互。若用户对表达式变元取定一组值,程序就求出并显示逻辑表达式的值。 (3)本程序先使用栈将逻辑表达式的变量进行存储,然后将栈中的元素作为二叉树的结点结构,然后根据优先级读取表达式建立二叉树,并通过逐个判断根实现对重言式的判别。 2. 程序执行的命令 (1)输入逻辑表达式 (2)判断表达式是重言式还是矛盾式 (3)若既不是重言式也不是矛盾式,则对变元取定值,并显示逻辑表达式的值 (4)结束 3.测试数据 (1) (A|~A)(B|~B) (2) (A~A)C (3) A|B|C|D|E|~A (4) ABC~B (5) (A|B)(A|~B) (6) A~B|~AB; 输出结果 True Forever False Forever True Forever False Forever Statisfactible Statisfactible 二. 概要设计 1.为实现上述程序功能,需要两个抽象数据类型,如下: (1)识别表达式使用的栈定义 ADT sqstack {数据对象:D={ai| ai(ElemSet,i=1,2,...,n, n 0} 数据关系:R1={ ai-1 ,ai| ai-1, ai(D, i=1,2,...,n } 约定an端为栈顶,ai端为栈底。 基本操作: initstack(stack s) 操作结果:构造一个空栈S。 gettop(st,e) 初始条件:栈S已存在且非空。 操作结果:用e返回S的栈顶元素 push(st,e) 初始条件:栈S已存在。 操作结果:插入元素e为新的栈顶元素。 pop(st,e) 初始条件:栈S已存在且非空。 操作结果:删除S的栈顶元素,并用e返回其值。 } ADT sqstack (2)二叉树的定义 ADT bitree {数据对象D:D={ai | ai∈ElemSet, i=1,2, …,n, n≥0} 数据关系R:若D为空集,则称为空二叉树。 若D仅含一个数据元素,则R为空集,否则R={H},H满足关系: (1)??T中存在唯一的一个结点,它没有前驱,称为树的根,用root表示,在集合D中用a1表示; (2)????? 若D中元素个数大于1,对于任意的数据元素aj∈D且j≥2,存在唯一的数据元素ai∈D,有ai, aj∈H; (3)????? 若D中元素个数大于1,对于任意的数据元素ai∈D,仅存在不多于2个数据元素aj,ak∈D且j, k≥i,有 ai, aj , ai, ak ∈H,其中,若jk,则称aj为ai的左孩子节点,ak为ai的右孩子节点。 (4)????? 对于任意的数据元素aj∈D且j≥2,存在D1 D,D1={ aik| aik∈ElemSet, k=1,2, …,m, m≥0},有唯一的Pj={ai1, ai1, ai1, ai2, …, aim-1, aim, aim, aj},这个集合Pj表示从根结点到结点aj的一条路径。 基本操作P: creattree(char *p,stack vari,stack symbol) 操作结果:构造二叉树。 int getvalue(bit root,int num[]) 初始条件:二叉树已存在 操作结果:根据变量的取值进行求值 void user(bit root,int m,char b[]) 初始条件:二叉树已存在 操作结果:输入变量的值,若求得逻辑表达式为1,则显示Ture,若求得逻辑表达式为0,则显示False void judge(bit root,char bo[],int nu) 初始条件:二叉树已存在 操作结果:表达式若是重言式则返回true forever,若是矛盾式返回false forever,否则返回Statisfactible }ADT bitree 2.本程序主要分为六个模块 (1)主程序

文档评论(0)

weizhent2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档