南京理工 优秀VC++课程设计报告.doc

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

南京理工大学VC++课程设计报告 课 程: VC++课程设计 系 别: 班 级: 09 学 号: 09 姓 名: 选题1名称: 八皇后问题 选题1难易级别: B级 选题2名称: 选题2难易级别: 自报成绩: 起止时间: 8月24日至9月9日 指导教师: 严悍 2010年 9月 目 录 课题目标 增加函数,完成每输入一组解,暂停屏幕,显示“按任意键继续!”。 完善程序,编程计算皇后问题共有几种排列方案。 增加输入,显示在第一个皇后确定后,共有几组排列。 将每组解的棋盘横向排列输出在屏幕上,将五个棋盘并排排列,即一次8行同时输出5个棋盘,同样完成一组解后屏幕暂停,按任意键继续。 求出在什么位置固定一个皇后后,解的数量最多,在什么位置固定一个皇后后,解的数量最少,最多解是多少,最少的解是多少,并将最多、最少解的皇后位置及所有的解求出,同样5个一组显示。 添加:增加输入错误检测,输入有误,则显示“你的输入有误,请重新输入!” 2 程序具体实现原理 2.1 总体方案 构建一个堆栈类和一个模板类,存储相关算法函数、输入输出函数、检测函数,通过用户的输入来选择操作过程,最后由程序算法输出结果。 2.1.1开发平台 操作系统:windows 7 开发软件:visual C++ 6.0 2.1.2基本原理 说明:程序开始,选择不同选项,可以依次实现以下功能:1、显示八皇后的所有排列方案。 2、确定一个皇后的位置,其他皇后的排列方案。3、将一皇后固定在某列,显示其中的最多与最少的方案。4、自主选择退出。5、程序中加入了输入查错功能,流程图中未显示。 2.2 程序各个功能说明 2.2.1 程序结构 A、类层次结构: ①堆栈的类: class Stack { private: SType data[SSize]; //存放数据 SType Top; //栈顶数据 public: Stack() { Top = 0; } //构造函数 ~Stack() { } //析构函数 bool isEmpty(){return!Top;} //置空栈内数据 bool Push(int); //处理压栈 bool Pop(int ); //处理出栈 friend void Empty(Stack ); //置空栈内数据, 在Solve函数执行前使用 } ②棋盘的类: class Board {private: char board[8][8]; //一盘棋8*8 States Rows[8], DiagsLR[15], DiagsRL[15]; //行,左右斜线 char PrintBoard[100][8][8]; //输出的棋盘 public: int nNum; //保存一组解的数目 static int AllNum; //保存所有方案的数目 Board(); //构造函数 bool isAttacked(int, int); //处理冲突 void PlaceQueen(int, int); //放入皇后 void RemoveQueen(int, int); //移去皇后 void Print(int,int); //前一个参数保存一行输出解的个数,后一个参数保存共输出解的数目 void SaveBoard(); //解决一组解后保存到PrintBoard数组中 void SaveAll(); //保存所有八皇后问题的解 friend void Empty(Board ); //置空栈内数据, 在Solve函数执行前使用 }; 2.2.2 课程设计要求的实现 ①如何使每输入完一组数据后,显示“按任意键继续!”? if(c==N){ //输出对应的所有解,一行排列五组 for(i=0;inum;i++){ if(num-iN) break; //当剩余解数大于五组可以并排显示时 for(j=0;j8;j++){ for(n=0;nN;n++){ for(k=0;k8;k++) coutPrintBoard[i+n][j][k]flush; cout\t; } cout\n; } //至此已经完成输出一排五组解 i+=N-1; //跳过已输出的五组解 cout按任意键继续. . .\nflush; ②八皇后问题共有几种排列? 通过SolveAll()函数来解决八皇后的算法问题,进而得到答案 void SolveAll() { for(i=0;i7;i++){ int row=i,col=0,exi

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档