1 / 15
文档名称:

课程设计(论文)--汉诺塔演示程序设计.docx

格式:docx   大小:85KB   页数:15页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

课程设计(论文)--汉诺塔演示程序设计.docx

上传人:小博士 2022/7/1 文件大小:85 KB

下载得到文件列表

课程设计(论文)--汉诺塔演示程序设计.docx

文档介绍

文档介绍:攀枝花学院
学生课程设计(论文)
题 目: 汉诺塔演示程序设计
学生姓名:孟攀 学 号:200410833057
所在院(系):计算机学院
专 业: 计算机科学与技术
班 级: 2004级3班
指导教师: 欧方平 职称: 讲 大小不同的盘子移动的全过程演 Zj\ O
关键词 汉诺塔,变换矩阵,种子填充算法,递归调用
目录
摘要 I
1需求分析 1
1
1
2
2概要设计 3
1程序功能模块 3
2. 2程序流程图 3
3数据结构的设计 4
3详细设计 5
1程序初始化 5
1. 1代码功能 5
1. 2功能实现代码 5
3. 2盘块的移动过程 5
3. 2. 1代码功能 5
3. 2. 2功能实现代码 5
6
3. 3. 1流程图 6
3. 3. 2功能实现代码 7
4测试与运行 8
结束语 9
参考文献 10
1需求分析

汉诺塔演示程序设计是计算机图形学中图形变换的内容之一。而图形学中的 图形变换的概念是由简单图形生成复杂图形,可用二维图形表示三维形体,甚至 可以对静态图形经过快速变换而获得图形的动态显示效果。其任务是研究各点坐 标之间的变化规律。而本次课程设计就是利用C语言以及图形函数实现汉诺塔的 递归算法来进行其盘块移动的全过程显示。在TC环境中要实现这样的功能,就 要牵涉到图形设备接口的知识。Windows图形设备接口是为与设备无关的图形设 计的,是Windows系统的重要组成部分,负责系统与用户或绘图程序之间的信息 交换,并控制在输出设备上显示图形或文字。应用程序必须通知图形设备接口来 加载特定的设备驱动,一旦驱动得以加载,就可以准备应用设备进行相关的操作 这些任务都要通过创建和维护设备描述表来完成。在实现汉诺塔演示程序设计 时,是利用坐标系统而得到的,而在Windows应用程序中有两种坐标系统:设备 坐标系统和逻辑坐标系统。其中设备坐标系统中又有三种相互独立的坐标系统: 屏幕坐标系统、窗口坐标系统和用户区坐标系统。这些坐标系统均以像素点来表 示度量的单位。屏幕坐标系统使用整个屏幕作为坐标区域,原点为屏幕原点。窗 口坐标系统使用了边界在内的应用程序的窗口作为坐标区域。窗口边界的左上角 是坐标系统的原点。用户坐标系统是最经常使用的坐标系统。用户区是窗口工作 区,不包括窗口边界、菜单条及滚动条等。用户一般只需操作应用程序的用户区, 因此用户区坐标系统对大多数应用程序都是适用的。
在计算机机图形学中窗口的定义是指在用户坐标系中定义的确定显示内容 的一个矩形区域,只有在这个区域内的图形才能在设备坐标系下输出,而窗口外 的部分则被截掉。视区是在设备坐标中定义的一个区域,用于输出窗口中的图形。 视区决定了窗口中的图形要显示于屏幕上的位置的大小。

本课程设计需要的设备为硬件要求和软件配置要求具体要求如下:
硬件要求:一台计算机。
软件配置:WINDOWS> C/VC++6. Oo
1 ■ 3功能描述
本课程设计是利用图形学的相关知识在TC或Visual C++环境下利用递归 算法实现汉诺塔演示的全过程,其基本的功能描述如下:
绘制三个塔座。
在第一个塔座上绘制一个矩形(一个矩形代表一个盘子),栈的高度递增, 则矩形的大小递减。
为矩形填充颜色,盘子的颜色代码为栈顶盘子代号加1。
通过鼠标或者键盘控制移动矩形,将所有的矩形借助第二个塔座从第一个 塔移到第三个塔,并显示每次移动盘子的步骤。
2概要设计
2. 1程序功能模块
由需求分析知,本次课程设计是用递归算法实现汉诺塔演示程序,故其功能 模块分为:程序初始化模块,盘块移动模块,递归调用模块三个模块。
(可以把功能模块用图画出来)
2. 2程序流程图

2. 3数据结构的设计
根据需求分析将用递归算法实现汉诺塔演示过程的数据结构的设计如下:
用一个结构体数组 struct M ( int data[15] ; int top; }num[3];来定 义三个塔座的高度,以及每个塔座存放每个盘块的代号。
定义两个变量cx,cy来分别表示程序演示步骤的横坐标和纵坐标的变 化。
用函数 void move (char x, char y, struct M num[3]):来表示盘块移动 的具体过程;并在move函数中调用函数void hanoi (char x, char y, char z, int n, struct M num[3]);来表示递归调用的过程;最后用一个初始化 函数void Init (void)来对整个程序进行初始化,并调用move函数。