魔王语言报告(带有完整程序).doc

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

西安郵電學院 目: 魔王语言 院系名称: 专业名称: 班 级: 学生姓名: 学号(8位): 指导教师: 设计起止时间: 一. 设计目的 以栈和队列为数据结构,使用文件读写、查找等操作,完成对魔王语言的解释。 二. 设计内容 有一个魔王总是使用自己的一种非常精炼而抽象的语言讲话,没有人能听懂。但他的语言是可以逐步解释成人能懂的语言的,因为他的语言是由以下两种形式的规则由人的语言逐步抽象上去的: (1)α→β1β2 …… βm (2)(θδ1δ2 …… δn)→ θδnθδn-1 …… θδ1 θ? ? ? 在这两种形式中,从左到右均表示解释;从右到左均表示抽象。试写一个魔王语言的解释系统,把他的话解释成人能听得懂的话。 三.概要设计 通过栈、队列和函数的调用来实现魔王语言。 1.功能模块图; 2.各个模块详细的功能描述。 1. 通过打开规则文件读取文件中的数据,并将其保存在数组r中 2. 通过打开小写字母匹配文件读取文件中的数据,并将其存储在链表head中。 3. 通过这个函数将所有的魔王语言存储在栈中。 4. 通过这个函数将魔王语言中所有的括号去掉,并将其结果存储在队列Q中 5. 通过这个函数,根据规则文件,将去掉括号后的魔王语言中的大写字母全部转换为小写字母 6. 通过这个函数,根据小写字母匹配文件,将小写字母全部翻译为人类语言。 7. 通过这个文件将翻译好的魔王语言保存在结果文件中,并为文件加密。 四.详细设计 1.功能函数的调用关系图 1.Open-rule()、Open-mean()keep()和translate()函数无调用其他自己设定的函数; 2.Pushall()函数调用关系图 3. Test_brack( );函数调用关系图 4.dealUpletter();函数调用关系图 5. password( );函数的调用关系图 2.各功能函数的数据流程图 dealUpletter函数的流程图: dealUpletter()函数中的if语句 brack()函数的流程图 : brack()函数中的for循环语句: for循环语句中的while语句1的流程图: for循环语句中的while语句2的流程图: for循环语句中的if语句的流程图: 3.重点设计及编码 void brack(LinkStack top,LinkQueue * Q)//处理括号 { int n,k,s,i; LinkStackNode * p; LinkStack top1; char x,y,ch; n=0; for(p=top-next;p!=NULL;p=p-next) if(p-data == () n++; //记录括号的个数 for(i=1;i=n;i++) { for(s=0;sn-i+1;) { Pop(top,x); //将最内层括号外的数据存在下层栈 if(x == () s++; if(s!=n-i+1) EnterQueue(Q,x); } InitStack(top1); k=0; while(top-next-data != ) ) //将最内层的括号内的字母逆序存储在辅助栈 { Pop(top,x); if(k==0) ch=x; //记录最内层括号内第一个字母 Push(top1,x); k++; } Pop(top,y); //最内层括号)出栈 k=0; //处理最内层括号的内容 Pop(top1,y); while(top1-next != NULL) { if(k%2 == 0) EnterQueue(Q,ch); //把最内层的括号的内容插入队列中 if(k%2 == 1) { EnterQueue(Q,y); Pop(top1,y); } k++; } EnterQueue(Q,ch); while(top-next!=NULL) { Pop(top,x); EnterQueue(Q,x); //将最内层括号)外的字母存到队列中 } if(i!=n) { InitStack(top); while

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档