结对项目(四则运算版)

 

学习了一会正则表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.] \w+)*\.\w+([-.]\w+)*
^[A-Za-z]+$  //匹配由26 个英文字母组成的字符串
^[A-Z]+$  //匹配由26个英文字母的大写组成的字符串
^[a-z]+$  //匹配由26个英文字母 的小写组成的字符串
^[A-Za-z0-9]+$  
^\w+$  

 

后台使用技术SSM

 

前台 html+css+js+ajax

 

1.Calc()

 

这个Calc 函数接受字符串的输入(字符串里就是算术表达式,例如 “5*3.5”,“7/8 - 3/8 ”,“3 + 90 * (-0.3)”等等),这个模块的返回值是一个字符串,例如,前面几个例子的结果就是(“17.5”,“1/2”,“-24”)。

 

 2.Setting()

 

在生成四则运算题目之前,需要对一系列属性进行设置,例如生成题目的数量,操作数的数量,题目及答案中的数值的范围,运算符的种类,(+-*/,是否支持真分数运算,是否支持小数运算,是否支持乘方运算……

 

 3.Generate()

 

生成所需要的题目了,题目增加以下限制

 

  • 生成的题目计算过程中不能产生负数

 

  • 生成的题目中不能包括不必要的括号

 

  • 程序一次运行生成的题目不能重复

 

实现以上接口,编写API文档,供UI组使用(亦可自行增加功能

 

class fomularNode
 2 {
 3 public:
 4     int value;
 5     bool chFlag;//if true,value is ascii
 6     fomularNode* lchild;
 7     fomularNode* rchild;
 8     fomularNode() :value(0),chFlag(false),lchild(NULL),rchild(NULL){}
 9     fomularNode(int val, bool flag, fomularNode* lch=NULL, fomularNode* rch=NULL)
10     {
11         value = val;
12         chFlag = flag;
13         lchild = lch;
14         rchild = rch;
15     }
16 };
17 
18 class fomularCore
19 {
20 private:
21     vector<fomularNode*> fomulars;
22     vector<char> ops = {'+','-','*','/','^','(',')'};//all ops 需要保持最后两个是括号!
23     vector<string> finalRes;//最终结果,和Generate返回值一一对应
24     int maxopNum = 5;//每个表达式中运算符个数
25     int range = 100;//操作数数的上限
26     int precise = 2;//输出精度(最大为6)
27     int fomuNum;//表达式个数
28     int MaxRange = 100000;//运算中出现的最大数
29     bool fractionflag = true;//是否进行分数运算
30     double result[MAX_FOMU_NUM];//原始字符串运算结果
31     bool okFlag[MAX_FOMU_NUM];//判断原始字符串是否符合要求
32 public:
33       //省略  
34 }    

 

posted @ 2020-06-10 17:39  派大星球日记  阅读(131)  评论(0编辑  收藏  举报