下载此文档

纸牌游戏.docx


文档分类:生活休闲 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
纸牌游戏



这个小程序是最初版本,计划最近增强功效方便处理数字不反复解法。
1。 游戏基础说明:大家应该全部玩过这个游戏,就是用若干个10以内数字,经过加减乘除组合结果为24。
2。 游戏程序思绪:通常见加括号措施能够改变同一次序一组数字运算前后,可是初步考虑这可是编译器等级难题,所以我想经过
组成不一样排序数字来穷尽全部组合,这么逻辑计算次序是由数字次序决定,要轻易多。
3。 关键函数介绍:
A. Operation 是一个函数数组,用来存放加减乘除四则运算。
double Add(double , double);
double Mul(double , double);
double Min(double , double);
double Div(double , double);
double (*Operation[4])(double , double)= {Add, Min, Mul, Div};
 
B. inputNumber是一个产生全部数字组合函数,其麻烦处于于每次改变一个数字就返回,我用了一个类似进位小算法,每次第一位
数总加一,到九就便为一,同时下一位数进一,假如下一位数也是九,那么就再进一位,假如最终一位也变为九了说明穷尽了,返回假。
bool inputNumber()
C. display原本是为了屏幕输出,以后结果太多改为文件输出,才加了文件参数。她又有三个内部函数。
1。void addNumber();很简单把选定数字组合放入数组偶数Index位置,操作符号在奇数Index位置。
2。void addParenthesis();是加括号函数,我算法是只有当加减号在乘除号之前出现时候才加挂号。它内部又有一个移动拷贝数组
内部小函数,很一般了。
3。void displaySolution(ofstream& f);原本是屏幕输出,现在改为能够同时写结果入文件。
void display(bool succeed, ofstream& f)
{
void addNumber();
void addParenthesis();
void displaySolution(ofstream& f);
}
D. findSolution是真正关键函数,我为了图省事,避免用树形结构,结果最终费尽心机,还是用数组实现了一个树形存放,不过很拙笨。
1。先把第一和第二个数四则运算结果存入临时数组total0到四位,然后下面一个数字和前一个结果就是接着存下去。也就是4前n次幂和。
2。total[second] = Operation[j -10](total[first], Operand[count+2]);这一句就是前一次结果和下一个数字四则运算。
3。我无法处理先除后乘为整数结果判定,。仿佛也还不错。
if ((count==Number-3)&&fabs(total[second]-24)<)
{
writeRecord(second);
result = true;
}
bool findSolution(ofstream& f);
E. writeRecord是findSolution一个内部函数,目标是依据D3判定来倒推出各个步骤操作符号,我用了类似辗转除法,就是类似10进制转
二进制那种,每次余数就是操作符号次序数字减十


(因为,为了把数字和符号同存在一个数组里,我定符号从10开始。)
void writeRecord(int num)
4。 不足之处:
,各位有主意告诉我。(就是inputNumber里产生不反复数字,即不产生 2,2,3,4组合。)
,或剔除相同结果。(Forget it, it is too hard!)
, 或5等等,实际上我程序是能够,可是不知道那里有小虫子,还没有找到。
5. 输出结果文件在此。  
 
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
const int Number = 4;
const in

纸牌游戏 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人业精于勤
  • 文件大小15 KB
  • 时间2020-11-22