算24点小游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
研究生课程论文
课程名称C++面向对象程序设计
授课学期2013 学年至2014 学年
第一学期
学院电子工程学院
专业电子与通信
学号
姓名
任课教师
专题算24点小游戏
交稿日期2014年01月10日
成绩
阅读教师签名
日期
广西师范大学研究生学院
目录
1 引言 (2)
1.1 设计任务与要求 (2)
1.2 设计目的 (2)
1.3 C++面向对象语言简介 (2)
2 C++课程设计原理及方案选择 (3)
2.1 概述 (3)
2.1.1 方案设计与论证 (3)
2.2 二十四点游戏的原理 (4)
2.2.1 主函数设计 (4)
2.2.2 子函数的设计 (4)
2.2.3 类体的设计 (5)
3 程序流程及演示 (6)
3.1 程序流程图,程序清单与调用关系 (6)
3.2 程序 (7)
3.3 运行结果 (9)
4 结论 (10)
1引言
随着网络技术的发展,小游戏在网络发展如火如荼。二十四点小游戏是一个不仅能放松认得神经而且益智的趣味小游戏。对于21世纪的今天,作为一个社会工作者来说,面对日益剧烈的竞争,工作压力都是很大的,为了释放压力就需要一个很好的减压平台,那么网络上的小游戏首当其冲,24点小游戏受到了欢迎。
1.1设计任务与要求
题目要求在输入4个数后,程序对这个4个数进行运算,若能计算出结果等于24,即输出运算过程。目标是在输入四个数之后,先进行全排列,然后进行全运算,从而最终得到结果以输出。
1.2设计目的
本次设计的目的就是在掌握c++编程语言和visual c++编译软件的基础上。完成一个算24的小游戏程序设计,在系统提示下输入4个数后,程序对这4个数进行运算,若能计算出结果等于24,即输出运算过程。程序设计目标很明确,在输入4个数之后,先进行全排列,然后进行全运算,重而得到最终结果输出。
1.3C++面向对象语言简介
C++是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。其编译器比目前其他计算机语言的编译技术更复杂。类是C++中十分重要的概念,它是实现面向对象程序设计的基础。类是所有面向对象的语言的共同特征,所有面向对象的语言都提供了这种类型。一个有一定规模的C++程序是由许多类所构成的。
C++支持面向过程的程序设计,也支持基于对象的程序设计,又支持面向对象的程序设计。以后我们将介绍基于对象的程序设计。包括类和对象的概念、类的机制和声明、类对象的定义与使用等。这是面向对象的程序设计的基础。基于对象就是基于类。与面向过程的程
序不同,基于对象的程序是以类和对象为基础的,程序的操作是围绕对象进行的。
在此基础上利用了继承机制和多态性,就成为面向对象的程序设计(有时不细分基于对象程序设计和面向对象程序设计,而把二者合称为面向对象的程序设计)。
基于对象程序设计所面对的是一个个对象。所有的数据分别属于不同的对象。在面向过程的结构化程序设计中,人们常使用这样的公式来表述程序:
程序=算法+数据结构
算法和数据结构两者是互相独立、分开设计的,面向过程的程序设计是以算法为主体的。在实践中人们逐渐认识到算法和数据结构是互相紧密联系不可分的,应当以一个算法对应一组数据结构,而不宜提倡一个算法对应多组数据结构,以及一组数据结构对应多个算法。基于对象和面向对象程序设计就是把一个算法和一组数据结构封装在一个对象中。因此,就形成了新的观念:
对象=算法+数据结构
程序= (对象+对象+对象+…) + 消息
或:
程序= 对象s + 消息
“对象s”表示多个对象。消息的作用就是对对象的控制。程序设计的关键是设计好每一个对象,及确定向这些对象发出的命令,使各对象完成相应操作。
2 C++课程设计原理及方案选择
2.1概述
给定4个整数,其中每个数字只能使用一次;任意使用+ - * / ( ) ,构造出一个表达式,使得最终结果为24,这就是常见的算24点的游戏。这方面的程序很多,一般都是穷举求解。本文介绍一种算24点的程序算法,并给出两个具体的算24点的程序。
2.1.1方案设计与论证
关于这个计算24游戏的设计,首先我将题目看成两部分,一部分为运算数,一部分为运算符。首先由于有四个数,则只有三个运算符,由于涉及了括号,个人认为用穷举法才能
全面地进行说有的运算,我们可以将运算符和括号这部分归为主运算部分,在这部分中,运算数的位置固定,但是运算符和括号的位置会改变,而且程序主要就是在这部分运算,直接将数值引入,然后计算判断是否等于24,若等于24,则输出数值和这些运算符、括号的位置构成的运算式;然而,这是不够全面的,因为还要考虑运算数的排列位置,于是有了第二部分,运算数的位置全排列,同样是采用穷举法,将运算数全排列,在每个排列后面调用主运算的方法,从而达到全面不遗漏地计算。在MAIN函数中,我们仅需要记录输入的4个数字,然后将数值用在全排列函数中即可。整个程序的设计看起来很繁琐,但在运用上很简单,能简明扼要地表现出来。
2.2二十四点游戏的原理
程序设计主要有三个部分设计,主函数,子函数,以及类的设计。
2.2.1主函数设计
在上面课题分析与方案设计中简单阐述了主函数的设计与功能,用来实现数据的输入和输入数据的全排列,实现输入数据用c++输入函数cin来实现,即:cin>>a>>b>>c>>d;输入已经定义的四个数a,b,c,d。
主函数的第二个作用实现输入数据的全排列,分析4个数据的组合可以发现,a,b,c,d四个数每左移一位,当左移4次时回到原位a,b,c,d即实现了全排列,移位过程如下:
a b c d —b c d a —c d a b —d a b c —a b c d
然后对每种排列调用子函数,在子函数中实现每种排列的运算。
2.2.2子函数的设计
本程序中子函数主要实现的功能是每种排列的全运算,因为四个数需要计算三次,即:a_b_c_d,每一个下划线都有加减乘除四种运算符,即有4*4*4总运算形式。
子函数中需要解决的就是实现4*4*4全运算的算法。定义三个运算子f,g,h。分析可以发现计算过程f,g,h都包含加减乘除四种运算,当f中取加减乘除中任意一个运算符时,g中都要依次执行加减乘除,g中每一次运行时,h中都要执行加减乘除,这就是4*4*4的