首页 迷宫问题课程设计报告

迷宫问题课程设计报告

举报
开通vip

迷宫问题课程设计报告湖南文理学院课程设计报告 课程名称: 计算机技术基础 系 部: 电气与信息工程学院 专业班级: 学 号: 学生姓名: 指导教师: 完成时间: 2009.10.14 报告成绩: 迷宫通路问题 一.设计要...

迷宫问题课程设计报告
湖南文理学院课程 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 报告 课程名称: 计算机技术基础 系 部: 电气与信息工程学院 专业班级: 学 号: 学生姓名: 指导教师: 完成时间: 2009.10.14 报告成绩: 迷宫通路问题 一.设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).深入分析各个小问题,列出大纲,编写各部分程序模块; (3).对于设计中用到的关键 函数 excel方差函数excelsd函数已知函数     2 f x m x mx m      2 1 4 2拉格朗日函数pdf函数公式下载 ,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (4).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (5).完成课程设计报告,并进行答辩。 二.设计目的 通过游戏程序的设计训练和提高学生的基本技能,掌握字符串的表示方法和字符串函数的功能、Turbo C图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 三.   问题描述 以一个m x n的长方矩阵表示迷宫,1和0分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出从入口到出口的通路,或者没有通路的结论。 四、   需析求分? 1、      以二维数组migong[M][N]表示迷宫,其中migong[0][j]和migong[i][0](0<=j,i<=N)为添加的一圈障碍。数组中以元素1表示通路,0表示障碍,迷宫的大小理论上可以不限制。 2、      迷宫数据由程序提供,用户只需要进行选择迷宫就行。迷宫的入口和出口由程序提供。 3、      若设定的迷宫存在通路,则以长方形矩阵的形式将迷宫及其通路输出到标准终端上,其中“0”表示障碍,“2”表示通过的路径,“3”表示死胡同,没有显示的区域表示没有到达过的地方。 4、      本程序只求出一条成功的通路。但是只要对函数进行小量的修改,就可以求出其他全部的路径。 5、      程序执行命令为:(1)、创建迷宫;(2)、求解迷宫;(3)、输出迷宫。 五、   概要设计 1、 设定栈的抽象数据类型定义: ADT zhan{ 数据对象:D={ai|ai属于yanshu,i=1、2…n,n>0} 数据关系:R={|ai-1,ai属于D,i=2,3,…n} 基本操作: gouzhan(*s,*migong) 操作结果:构造一个空栈 push(*s,*e) 初始条件:栈已经存在 操作结果:将e所指向的数据加入到栈s中 pop(*s,*e) 初始条件:栈已经存在 操作结果:若栈不为空,用e返回栈顶元素,并删除栈顶元素 getpop(*s,*e) 初始条件:栈已经存在 操作结果:若栈不为空,用e返回栈顶元素 popover(*s) 初始条件:栈已经存在 操作结果:输出栈中的所有元素,同时清空栈 stackempty(*s) 初始条件:栈已经存在 操作结果:判断栈是否为空。若栈为空,返回1,否则返回0 destroy(*s) 初始条件:栈已经存在 操作结果:销毁栈s }ADT zhan 2、 设定迷宫的抽象数据类型定义 ADT yanshu{ 数据对象:D={ai,j|ai,j属于{‘ ’、‘0’、‘2’、‘3’},0<=i<=M,0<=j<=N} 数据关系:R={ROW,COL} ROW={|ai-1,j,ai,j属于D,i=1,2,…M,j=0,1,…N} COL={|ai,j-1,ai,j属于D,i=0,1,…M,j=1,2,…N} 基本操作: gouzhaomigong(*migong,m,n) 初始条件:二维数组migong[m][n]已经存在,其中第1至第m-1行,每行自第1到第n-1列的元素已经值,并以值0表示障碍,值1表示通路。 操作结果:构造迷宫的字符数组,以空白表示通路,字符‘0’表示障碍,并在迷宫四周加上一圈障碍。 markprint(*seat) 初始条件:迷宫中的所有坐标seat都已经被赋值 操作结果:若迷宫中该坐标能够通过且已经通过,则标记为2,若不能够通过(死胡同),标记为3。 shuchu(*migong,n) 初始条件:迷宫已经存在 操作结果:以字符形式输出迷宫 }ADT yanshu 3、 本程序包括三个模块 a、 主程序模块 void main() { 初始化; 构造迷宫; 迷宫求解; 迷宫输出; } b、 栈模块——实现栈的抽象数据类型 c、 迷宫模块——实现迷宫的抽象数据类型 六、   详细设计 1、 坐标位置类型 #define zuobiao int zuobiao migong[M][N]; 2、 迷宫类型 typedef struct yanshu { int xuhao; //序号 zuobiao *seat; //栈元素的坐标 int fangxiang; //要查找的方向 }yanshu; 3、 栈类型 typedef struct zhan { yanshu *base; //栈构造之前和销毁之后base的值均为NULL yanshu *top;//栈顶指针 int size; //当前分陪的存储空间的长度,单位:元素 }zhan; 七、   伪代码 1、     主函数 void main() { 变量的定义; gouzhaomigong(migong,M,N); //构造一个迷宫 shuchu(migong,M,N); //将该构造好的迷宫输出 tansuo(weizhi,&migong[1][1],&migong[M-2][N-2]); //探索迷宫 shuchu(migong,M,N); //输出探索出来的迷宫 } 2、     迷宫构造 void gouzhaomigong(zuobiao migong[M][N],int M,int N) { //该函数是用来构造一个迷宫,通过更改还能够构造其他类型迷宫 定义变量 a,b,c,i,k; i=n/3-1;k=/2;a=k-2; if(k*2==n) b=k; else b=k+1; for(a=0;abase=分配一定空间; s->top=s->base; s->top->seat=s->base->seat=migong; s->top->fangxiang=0; s->top->xuhao=0; return s; } void push(zhan *s,yanshu *e) //将e所指向的元素加入到栈中 { if(空间不足) 分配连续空间,给各值赋值; s->top++; s->top->seat=e->seat; s->top->fangxiang=e->fangxiang+1; s->top->xuhao=e->xuhao; } yanshu *pop(zhan *s,yanshu *e)//栈不为空,删除栈顶元素,用e返回 { if(栈空) retrun NULL; e->seat=s->top-seat; e->seat--; e->fangxiang=s->top->fangxiang; e->xuhao=s->top-xuhao; s->top--; return e; } yanshu *gettop(zhan *s,yanshu *e)// 用e返回栈顶元素,不删除 { if(栈为空) return NULL; e->seat=s->top->seat; e->seat=s-top->seat; e->xuhao=s->top->xuhao; return e; } int stackempty(zhan *s) //判断栈是否为空 { if(s->top==s->base) return 1; else return 0; } void popover(zhan *s) //输出栈中的所有元素,同时清空栈 {for(;;) { e=pop(s,e); if(s->top-s->base==0) return; } } 八.系统程序结构及流程图 不 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 !还要继续修改。 4、     求解迷宫中的一条路径 void tansuo(yanshu weizhi,zuobiao *rukou,zuobiao *chukou) { //若迷宫weizhi中存在从rukou到chukou的通道,则求出其中一条 定义和初始化所需要的变量; gouzhan(s,curpos);// do{ if(pass(curpos))//当前位置可以通过,即未曾走过的模块 { e=zuhe(curstep,curpos,0);//组合成一个元素 push(s,e);//加入到路径栈中 if(e->seat==chukou) braek; //到达终端 curpos=nestpos1(curpos,0);//下一位置是当前位置的东临位 curstep++; //探索下一步 } else{ if(!=stackempty(s))//如果栈不空 { e=pop(s,e); while(e-seat);//留下不能通过标记,退一步 e=pop(s,e); } if(e->fangxiang<4) { push(s,e); //探索下一方向 curpos=nextpos1(e->seat,e->fangxiang); //设定当前位置是新方向上的相邻模块 } } }while(!stackempty(s)); return; } 5、     迷宫的输出显示 void shuchu(zuobiao migong[M][N],intm,int n) { //给出迷宫的行列数和首地址,输出迷宫矩阵 for(i=0;i 知识点 高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载 。掌握结构体和指针的联合使用,学会链表的构造和常用操作方法,认真编写实习日志和实习体会。并通过各种途径查找所需资料,拓宽视野,培养自学能力。也懂得了理论与实际相结合的重要性,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。 在做这次课程设计的时候,遇到这样那样的麻烦,因此,我也得到了许多宝贵的经验: 1、在设计程序之前,务必要对你所设计的题目和内容有一个系统的了解,知道所设计的题目和内容包含那些资源。 2、设计程序采用什么编程语言并不是非常重要,关键要有一个清晰的思路和一个完整的软件流程图,因而,要先把设计原理与思路搞清楚,再把流程图画出来,这样设计起来就简单多了。 3、在设计程序时,不能妄想一次就将整个程序设计好,“反复修改,不断改进”是程序设计的必经之路,发现错误也是取得成绩的一种。 4、要养成注释程序的好习惯,一个程序的完美与否不仅仅是实现功能,而应该让人一看就能明白你的思路,这样也为资料的保存和交流提供了方便。 5、在设计程序过程中遇到问题是很正常的,但我们应该将每次遇到的问题 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 下来,并分析清楚,以免下次再碰到同样的问题。 在14天编程的过程当中弥补了我许多知识上的缺陷,弄清楚了我不懂的地方和似是而非的地方,使我及时补上了欠缺。其次,通过14天综合实训编程使我的知识形成了一个完整的框架结构,而不再是零散的知识个体,使我在使用时更加的方便。在14天的实习结束后,我对做完的习题检查比再是一切的走马观花,而是仔细核对、认真检查。这也改变了我做题时心烦气燥的习惯,现在做题可以平和静气的完成。我的自制能力更强了,基本完全可以控制自己,避免外界的干扰,安心地完成自己的工作。总之,这次实习对我自身有了很大的提高。十二.参考文献 严蔚敏、吴伟民,数据结构题集,清华大学出版社。 评阅意见: 评阅教师 日期 10
本文档为【迷宫问题课程设计报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_937805
暂无简介~
格式:doc
大小:74KB
软件:Word
页数:10
分类:互联网
上传时间:2011-12-28
浏览量:226