下载此文档

纸牌游戏.docx


文档分类:生活休闲 | 页数:约14页 举报非法文档有奖
1/14
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/14 下载此文档
文档列表 文档介绍
,计划最近增强功能以便解决数字不重复的解法。1。游戏的基本说明:大家应该都玩过这个游戏,就是用若干个10以内数字,通过加减乘除组合结果为24。2。游戏程序思路:通常用加括号的办法可以改变同一顺序的一组数字的运算先后,可是初步考虑这可是编译器级别的难题,因此我想通过组成不同排序的数字来穷尽所有的组合,这样逻辑的计算顺序是由数字的顺序决定的,要容易的多。3。主要函数介绍:,用来存储加减乘除四则运算。doubleAdd(double,double);doubleMul(double,double);doubleMin(double,double);doubleDiv(double,double);double(*Operation[4])(double,double)={Add,Min,Mul,Div}; ,其麻烦处在于每次变化一个数字就返回,我用了一个类似进位的小算法,每次第一位数总加一,到九就便为一,同时下一位数进一,如果下一位数也是九,那么就再进一位,如果最后一位也变为九了说明穷尽了,返回假。boolinputNumber(),后来结果太多改为文件输出,才加了文件参数。他又有三个内部函数。1。voidaddNumber();很简单把选定的数字组合放入数组的偶数Index位置,操作符号在奇数的Index位置。2。voidaddParenthesis();是加括号的函数,我的算法是只有当加减号在乘除号之前出现时候才加挂号。它内部又有一个移动拷贝数组的内部小函数,很普通的了。3。voiddisplaySolution(ofstream&f);原本是屏幕输出,现在改为可以同时写结果入文件。voiddisplay(eed,ofstream&f){voidaddNumber();voidaddParenthesis();voiddisplaySolution(ofstream&f);},我为了图省事,避免用树形结构,结果最后费尽心机,还是用数组实现了一个树形的存储,不过非常的笨拙。1。先把第一与第二个数的四则运算结果存入临时数组total的0到四位,然后下面的一个数字与前一个结果就是接着存下去。也就是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;}boolfindSolution(ofstream&f);,目的是根据D3的判断来倒推出各个步骤的操作符号,我用了类似辗转除法,就是类似10进制转二进制的那种,每次的余数就是操作符号的顺序数字减十(因为,为了把数字和符号同存在一个数组里,我定符号从10开始。)voidwriteRecord(intnum)4。不足之处:,各位有主意告诉我。(就是inputNumber里产生不重复数字,即不产生2,2,3,4的组合。),或剔除相似的结果。(Forgetit,itistoohard!),或者5等等,实际上我的程序是可以的,可是不知道那里有小虫子,还没有找到。。#include<iostream>#include<fstream>#include<cmath>usingnamespacestd;constintNumber=4;constintOpNum=6;constintSignNum=4;enumOp{ADD=10,MIN=11,MUL=12,DIV=13,LEFT=14,RIGHT=15};intOpCount=0;intNumCount=0;char*OpStr[OpNum]={"Addition","Minus","Multiply","Divide","Left","Right"};char*OpSign[OpNum]={

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

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数14
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yuzonghong1
  • 文件大小38 KB
  • 时间2019-08-20
最近更新