- 2
- 0
- 约1.73千字
- 约 28页
- 2019-09-06 发布于广东
- 举报
第*页 共28页 目录 退出 目录 第*页 共28页 案例十二 小孩出列 本案例知识要点 结构体的使用 指针的使用 链表的使用 类的设计和使用 类间的调用 第*页 共28页 一、案例需求 案例描述 小孩出列游戏,也称为Joseph问题。一群小孩围成一个圆圈,任意设定一个数m,从其中某个小孩开始,按顺时针方向数,每数到第m个小孩时,该小孩就离开,游戏一直进行到只剩最后一个小孩,该小孩便是游戏的胜者。 程序首先模拟生成一群小孩围成圆圈。然后实现游戏过程,求出最后的胜利者。 案例效果图 小孩出列案例效果如图所示。 第*页 共28页 小孩出列案例效果图 第*页 共28页 功能说明 由用户设置参加游戏的人数、从哪个人开始计数以及出列小孩之间的间隔数。 循环显示每次出列的小孩的编号,直到出现胜利者为止。 第*页 共28页 二、案例分析 本案例中,作为游戏角色的小孩围成圆圈可以用一个类来实现。另外,游戏过程也可以用一个类来模拟。下面讲述两个类的实现过程。 第一个类模拟小孩站成圆圈。因此类中必须包含的数据是用于描述圆圈的数据结构,可以使用链表结构来描述。类中的数据成员就是表示链表结构的指针等数据。链表中用每个结点代表一个小孩,每个结点是一个结构,结构中包括小孩的信息(本身的编号及指向下一个小孩的指针)。 第*页 共28页 因为游戏中数小孩,小孩出列(删除小孩结点)等事件都与链表有关,因此这些事件应该封装在本类中,将实现这些事件的函数作为类的成员函数。 第二个类模拟游戏过程,首先要知道参加游戏的人数、计数的起始位置,以及间隔多少个小孩出列一个小孩。这些属于类的特征,应作为类的数据成员。类的行为是:通过人机交互初始化上面这些数据,推动游戏产生胜利者。这些操作定义为成员函数。 第二个类在调用自身函数获取游戏初始信息后,通过生成第一个类的一个对象,并循环调用该对象的计数、出列等成员函数实现游戏过程。 第*页 共28页 类的设计 基于上述分析,本案例需要自定义结构 体child和两个类,第一个类ChildRing模拟小 孩站成圆圈,第二个类Game模拟游戏过程。 结构体 结构体child结构如图所示。 第*页 共28页 结构体child 第*页 共28页 ChildRing类的设计 ChildRing类结构如图所示。 第*页 共28页 ChildRing类图 第*页 共28页 数据成员 int num; 队列中小孩的个数。 child *pBegin; 指向队列开始的指针。 child *pivot; 临时变量,用于链表操作。 child *pCurrent; 指向当前位置的指针。 第*页 共28页 函数成员 ChildRing(int totalnum); 构造函数,构造链表。 void Count(int countnum); 按顺序数coutnum个小孩,相当于链表当前指针向前 移动Countnum个位置。 void getCurrentChild(); 获取当前小孩信息。 void deleteChild(); 删除出列小孩。 int getRemainnum(); 获取剩余小孩数。 ~ChildRing(); 析构函数,清理内存。 第*页 共28页 Game类的设计 Game类的结构如图所示。 第*页 共28页 Game类图 第*页 共28页 数据成员 int NumofChildren; 游戏中小孩的个数。 int BeginPos; 游戏开始的位置。 int interval; 记载数数的间隔个数。 第*页 共28页 函数成员 void Initial(); 设置游戏初始值,包括参加游戏人数、从第几个人开始计数、间隔出列数。 void GetWinner(); 开始游戏,找出胜者。 第*页 共28页 主程序设计 主函数中声明了一个Game类的对象MyGame,通过调用类的两个成员函数完成显示初始画面、循环出列获得最后的胜者的任务。程序结构简洁清晰,流程图略。 第*页 共28页 四、案例实现 第*页 共28页 第*页 共28页 第*页 共28页 第*页 共28页 第*页 共28页 目录 退出 目录
您可能关注的文档
- 邹冯平讲义定稿.ppt
- 心脏电生理学.ppt
- 18临床科研论文的撰写原则和方法.ppt
- 2012届高三数学复习课件(广东理)10.1直线的方程 .ppt
- 2013电法勘探原理01.ppt
- 2013届数学(理)第一轮第8章+第47讲+直线的斜率与直线的方程.ppt
- 2013届新课标高中数学(理)第一轮总复习第8章+第47讲+直线的斜率与直线的方程.ppt
- ch8(1)_二进制同步通信规程.ppt
- 第2章Java应用基础.ppt
- 第五章+AutoCAD精确绘图工具.ppt
- 山西天一大联考2025-2026学年高二上学期期末学情监测语文试题(试卷+解析).docx
- 山西忻州部分学校2025-2026学年高一上学期2月质量检测数学试题(人教B版)(试卷+解析).docx
- 山西运城市2025-2026学年高二第一学期期末调研测试数学试题(试卷+解析).docx
- 陕西省榆林市榆阳区2025-2026学年八年级上学期期末地理试题(试卷+解析).docx
- 陕西西安市碑林区2025-2026学年度第一学期期末八年级生物试题(试卷+解析).docx
- 四川省广元市苍溪县2025-2026年八年级上学期期末道德与法治试题(试卷+解析).docx
- 江苏泰州市姜堰区2025-2026学年七年级上学期1月期末数学试题(试卷+解析).docx
- 江苏省扬州市邗江区2025-2026学年九年级上学期期末考试化学试题(试卷+解析).docx
- 江西上饶市铅山县2025-2026学年第一学期期末考试八年级数学试题(试卷+解析).docx
- 江苏扬州市高邮市2025-2026学年度第一学期期末学业质量监测试题九年级英语(试卷+解析).docx
原创力文档

文档评论(0)