运算进化
在博客一记中,随机生成小学30道带有判断功能的加减法,根据需求的变化,在这一记中将有新的需求。不只是简单的加减法,而是要生成四则运算。根据有关资料表明四则运算要有三个及以上的运算符,只有这样的式子运算才能称的上是四则运算。
- 第一步:继承博客一记中的思想也是将题用一个类表示。相对于博客一记中的类,新的类明显要复杂得多。不只是有两个操作数,一个运算符,必须要有一段空间来保存操作数和运算符。因为要随机生成操作数及运算符,操作数的个数也是不确定的,故采用动态内存分配的方式。
class Problem { private: int *Operand;//存放操作数 int *Type;//存放运算符,0+ ,1- ,2* ,3/ string *Prob;//存放完整的问题 int opnum;//操作数个数 int brackets[2];//括号的位置 int Right_Result;//正确结果 int Write_Result;//填写的结果 public: Problem(); ~Problem(); void CreatProblem(int kuohao = 1);//创建题目 void SaveProblem();//将题目保存到Prob[] void ShowProblem();//显示题目 void Fill_Result();//填写结果 void Judge_Result();//判断结果 };
- 第二步,类的创建。将所有的操作数都放在了一个整型数组里,将所有的运算符也都放在数组里,最后形成的问题放到string类数组里。根据实际情况,预先设定宏定
# define OPERAND_NUM 4 //操作数不小于3,小于3+OPERAND_NUM
Problem::Problem() { opnum = 3+rand()%OPERAND_NUM;//操作数不小于3,小于3+OPERAND_NUM Operand = new int[opnum]; Type = new int[opnum-1]; Prob = new string[3*opnum]; for(int t = 0;t<3*opnum;t++) { Prob[t] = "