- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 福州教育二附中公开课《美国1787年宪法》教案.doc
- 实验八-队列(循环队列)的表示和实现-舞伴问题.doc
- 高三英语专题训练4.doc
- Drools的进一步研究.doc
- windows 下C++操作Mysql的一些总结.doc
- WebQuest网络课堂设计.doc
- dbcp优化配置说明.doc
- 英语专业大四精度第4单元单词.doc
- 循环队列的操作和实现C语言.docx
- 北京版 4年级 Unit 6 May I take your order? Lesson 20.doc
- 波兰数字媒体行业市场前景及投资研究报告-可编辑培训课件.pptx
- 德国地热能市场前景及投资研究报告-可编辑培训课件.pptx
- 德国电力和能源价格分析报告-可编辑培训课件.pptx
- 德国DAX指数分析报告-可编辑培训课件.pptx
- 德国MDAX市场前景及投资研究报告-可编辑培训课件.pptx
- 波罗的海地区DIY家居装饰电子商务市场前景及投资研究报告-可编辑培训课件.pptx
- 《Java Web技术及案例开发》 课件 第5、6章 JSP内置对象、 JSP与JavaBean.pptx
- 《Java Web技术及案例开发》 课件第7、8章 EL和JSTL、 Filter和Listener.pptx
- 《Java Web技术及案例开发》 课件第9、10章 MVC模式、 异步刷新.pptx
- Python程序设计基础 课件 第1、2章 Python语言入门、 Python编程基础.pptx
文档评论(0)