结对作业---四则运算(Core 第四组)
Posted neversettle
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对作业---四则运算(Core 第四组)相关的知识,希望对你有一定的参考价值。
----by core 第四组 ( 邹卫其 范力 )
一.项目介绍
1.
2. 将四则运算的计算功能包装在一个模块中( Class或DLL)
3. 将Core模块通过一定的API 接口( Application Programming Interface ) 来和其他组的模块( UI )交流
三.代码实现
1. 定义 Core 类
1 class Core 2 { 3 private: 4 int que_num = 100; //题目数量 5 int data_num = 10; //操作数数量 6 int range = 5; //计算的数值范围 7 int opr_type = 3; //操作符种类 0.加减 1.加减乘 2.加减乘除 3.加减乘除乘方 8 int data_type = 1; //0整数 1小数 2分数 9 int accuracy = 2; 10 string* que = new string[que_num + 1]; 11 string* ans = new string[que_num + 1]; 12 public: 13 void set_que_num(int a) { que_num = a; } 14 void set_data_num(int a) { data_num = a; } 15 void set_range(int a) { range = a; } 16 void set_opr_type(int a) { opr_type = a; } 17 void set_data_type(int a) { data_type = a; } 18 void set_accuracy(int a) { accuracy = a; } 19 int get_que_num() { return que_num; } 20 int get_data_num() { return data_num; } 21 int get_range() { return range; } 22 int get_opr_type() { return opr_type; } 23 int get_data_type() { return data_type; } 24 int get_accuracy() { return accuracy; } 25 string *getQue(); 26 string *getAns(); 27 private: 28 string expstring(Node *root); 29 Node *creatOptree(); 30 Node calc(Node *root); 31 void previsite(Node *head); 32 char operat(); 33 char int_operat(); 34 int get_factor(int a); 35 };
2. 设置类的参数并调用示例
1 int main() 2 { 3 Core cal; 4 string *q, *a; 5 6 cal.set_data_num(10); 7 cal.set_que_num(100); 8 cal.set_range(10); 9 cal.set_opr_type(3); 10 cal.set_data_type(1); 11 cal.set_accuracy(3); 12 13 q = cal.getQue(); 14 a = cal.getAns(); 15 for (int i = 1; i <= cal.get_que_num(); i++) 16 { 17 cout << q[i] << " = " << a[i] << endl << endl; 18 } 19 20 system("pause"); 21 return 0; 22 }
四.测试
以下测试样例约定生成20道题目,每题10个运算数,数值范围0~10,在加,减,乘,除,乘方模式
1. 整数
1 ( 3 - 8 / 4 ) * ( 10 + 1 ^ 3 ) + 4 ^ 4 - ( 2 + 4 ) 2 = 261 3 5 / 1 + 1 - 5 + 9 * 10 - ( 10 + 5 - 4 * 2 ) 4 = 84 5 ( 6 - 4 + 8 ) * ( 10 - ( 5 ^ 1 - 2 ) ) + 5 + 9 + 3 6 = 87 7 5 * ( 10 * 7 - 7 ) - 2 / 1 + 9 + 4 ^ 4 + 4 8 = 582 9 9 * 3 ^ 2 + 4 * 3 + 7 * ( 9 + ( 10 - 7 ) * 2 ) 10 = 198 11 6 * ( 6 * 9 - 5 ) * 9 + ( 8 * 10 + 8 - 4 ) * 10 12 = 3486 13 ( 2 + 7 ) * ( 6 - 4 ) + ( 10 / 5 + 10 - 4 ) * 9 * 6 14 = 450 15 ( 3 + 4 * 4 ) * 4 + 1 ^ 1 * ( 7 / 1 + 1 / 1 ) 16 = 84 17 10 - 7 / 1 - ( 9 - 8 ) + 4 ^ 5 * ( 8 - 3 / 1 ) 18 = 5122 19 1 * 5 - 1 - 9 / 3 + 2 / 1 * 4 * 1 ^ 3 20 = 9 21 3 / 1 + 10 + 3 / 1 + 2 * 10 + 4 - ( 8 + 6 ) 22 = 26 23 3 * 2 * ( 4 / 2 + 5 ) + 3 - ( 6 - 3 ) + 9 - 1 24 = 50 25 2 * ( 8 - 4 + 1 ) + 1 ^ 5 + 3 + 8 * 4 - 7 26 = 39 27 7 + 10 - 4 - 2 + ( 10 + 6 ) * ( 1 ^ 3 + 4 / 2 ) 28 = 59 29 ( 1 + 9 - 7 / 1 ) * 9 * 10 + 7 * 6 * ( 6 - 2 ) 30 = 438 31 2 * ( 7 - 2 ) - ( 5 - 9 / 3 ) + 1 * 5 * 3 * 3 32 = 53 33 9 + 4 + 2 / 1 * 4 / 2 + 2 * 9 - 9 / 3 34 = 32 35 ( 2 ^ 4 + 7 / 1 ) * ( 2 + 9 * 9 ) + 2 * ( 4 + 4 ) 36 = 1925 37 ( 5 + 4 ^ 1 ) * 2 ^ 4 * 4 + 3 + 8 + 5 / 1 38 = 592 39 9 * 9 / 3 + ( 8 + 3 + 9 ) * ( 3 / 1 - 10 / 5 ) 40 = 47
2. 小数(精度为3)
1 ( 1.05 - 1 ^ 3 ) / ( 1.75 * ( 6.1 - 3.2 ) ) + 3.4 + 3.1 + 6.15 + 8.9 2 = 21.559 3 ( 6.85 + 4.1 ) * 7.2 + 1.65 / ( 6 ^ 5 * 2.9 + 1.45 + 5.6 + 8.05 ) 4 = 78.840 5 ( 9.55 / ( 7.95 - 7.4 ) - 0.65 ) / 7.3 + ( 0.1 + 1.8 ) / ( 9.8 - 3.4 / 6.7 ) 6 = 2.494 7 1.2 / ( 6.15 + 5.15 - 9.75 - 0.45 ) + 2.9 / ( 9.9 / 9.9 ) * 1.1 / 1.9 8 = 2.769 9 ( 3.8 - 1.05 ) * 3.75 / 2 ^ 5 + ( 9.25 + 4.4 ) * 7.85 * 6 ^ 4 10 = 138870 11 ( 4.1 / ( 5.05 * 9.3 ) + 9.25 - 0.4 ) * 2 ^ 2 + 1.1 - ( 2.5 - 2.2 ) 12 = 36.549 13 3.7 + 6 ^ 4 + 9.6 * 4 + ( 8.6 - 7.15 - 0.1 ) * ( 1.6 + 6.25 ) 14 = 1348.7 15 4.7 + 8.55 + 3.2 - 2.55 + ( 4.35 - 0.5 ) * ( 5.75 + ( 4.1 + 4.35 ) / 2.15 ) 16 = 51.168 17 ( 2 ^ 5 - 7.65 ) * 2 ^ 4 + 7.85 / 5.4 / ( 0.05 * 9.65 * 7 ) 18 = 390.03 19 7.95 - 6.45 + 1 ^ 3 + 8.15 * 5.55 + ( 3.75 + 7.1 ) / ( 8.75 - 1.05 ) 20 = 49.141 21 3 ^ 4 - 0.55 / 3.9 + 6.6 / 1 ^ 3 * ( 7 + 6.75 ) / 7.25 22 = 93.376 23 ( 2 ^ 4 - 0.05 ) / ( 3.15 - 0.2 ) + 8.55 - 8.2 + 1.6 * 8.75 + 5.65 24 = 25.406 25 3.6 / ( ( 8.45 - 1.15 ) / 8.5 + 1.4 * ( 7.15 - 3.15 ) ) + ( 1.05 + 4.4 ) * 9.4 26 = 51.787 27 ( 1.25 + 7.45 ) / ( 3 ^ 2 / 2 ^ 2 ) + 5 ^ 5 * 5 ^ 1 28 = 15628.9 29 5 ^ 5 - ( 4.45 + 2.65 + 2.15 ) + 0.1 * ( 8.45 - ( 9.6 - 7.25 ) * 0.4 ) 30 = 3116.5 31 2 ^ 1 + 5.5 - ( 4.1 - 1.95 ) + ( 7.05 - 4.45 ) * 9.4 - ( 1.4 - 0 ) 32 = 28.39 33 4 ^ 3 - 8.2 - ( 3.3 - 0.8 ) + 6.55 * 5.9 * 7.05 / ( 4.05 - 1.5 ) 34 = 160.142 35 3.3 + 9.8 / 7.9 + 2.9 * 4.9 + 9.6 - ( 3.9 + 2.4 ) * 8.75 / 6.8 36 = 20.243 37 4.45 - ( 9.25 + 0.75 - ( 4.65 + 5 ) ) + ( 8.95 + 9.1 ) * 1.3 - 8.05 / 7.9 38 = 26.546 39 8.1 / 0.75 / 3 ^ 1 + ( 8.35 - 6.6 ) * 2 ^ 4 / 5 ^ 2 40 = 4.72
3.分数
1 ( 3|3 - 9|7 / 8|6 ) / ( 2|7 * ( 10|8 - 3|10 ) ) + 4|5 + 3|2 + 5|4 + 2|2 2 = 1779|380 3 2|7 * 9|4 / 1|10 + 5|4 * 7|5 + 7 / ( 1 ^ 4 + 9|9 + 10|3 ) 4 = 1063|112 5 2 - 7|5 - ( 3|2 - 5|6 ) * 6|7 + ( 8|8 - 2|8 ) * 8|8 * ( 6|4 - 10|10 ) 6 = 113|280 7 7 * ( 10|9 - 5|9 ) + ( 9|10 - 1|9 ) * 5|2 - ( 9|8 + 4|9 * 2|8 ) * 8|9 8 = 1543|324 9 9|4 / 9 * ( 9|10 - 8|10 ) / 9|7 / 1|9 + 3|3 - 3|9 / ( 9|8 - 1|10 ) 10 = 4181|4920 11 ( 10|3 - 7|8 ) / ( 1|3 * 4 ) + 9|2 + 10|2 + ( 3|4 - 3|6 ) * ( 8|8 - 7|9 ) 12 = 3283|288 13 ( 8|10 + 10|7 - ( 8|6 - 7|7 ) ) * ( 5|6 + 2|5 + 9|6 ) + 4|4 / 6|6 + 2|7 14 = 10184|1575 15 4|10 + 6 ^ 4 + 9|3 * 8|9 + 2|9 + 6|3 + 5|5 + 3|5 - 5|8 16 = 93763|72 17 3|3 + 8 - 5|7 - 2|6 - ( 3|4 - 4|6 ) + 4|6 * 1|2 * 1|5 / 4 18 = 276|35 19 1 ^ 1 * 8|7 * 9|4 + 5 ^ 3 / ( ( 8|6 + 9|10 ) / ( 3 * 4|3 ) ) 20 = 106206|469 21 ( 4 - 9|9 ) / ( 9 * 4|10 + 8|6 ) + 4 ^ 3 - 1|2 * 1 ^ 2 22 = 2372|37 23 10|4 - 6|10 - ( 7|3 - 4|6 ) + ( 5|5 - 3|5 ) / ( ( 3|10 + 8|4 ) * ( 6|2 - 9|8 ) ) 24 = 15|46 25 6|7 * ( 4 - 2|9 ) / ( 6|6 * 3|3 ) * 5|8 * 3|9 + 7|4 * ( 4 - 3|6 ) 26 = 3427|504 27 2|5 + 10|4 + 10|8 - 3|9 + 6 ^ 1 + ( 8|2 - 4|4 * 5|3 ) * 5|4 28 = 191|15 29 1 ^ 5 + 2|4 + 3 ^ 1 * 8|9 + 3|4 + 7|3 * 3|10 / 6|10 30 = 73|12 31 1 ^ 5 + 10|4 - ( 3|9 - 1|9 ) + ( 10 - 7|9 ) / 9|2 * ( 1 + 8|9 ) 32 = 10423|1458 33 5|6 * ( 4|6 + 7|3 ) * ( 4|7 / 5|10 - 3|9 ) + 7|6 / 2|7 * 6|3 / 7|6 34 = 379|42 35 5|4 / 5|4 * 7|4 * 2 ^ 1 + 9 * ( 6 / 5|2 + 4|7 - 3|10 ) 36 = 964|35 37 9|10 + 2 + 10|6 - 8|9 / ( 2|9 * 4|10 + 2 ) + 6|6 / 10 * 8|5 38 = 30323|7050 39 4 / ( 5|9 - 1|9 ) / ( 5|6 + 4|2 ) + 4|8 + 10|9 + 7|4 - ( 6|9 + 10|7 ) 40 = 19031|4284
4. 样例分析
可以看到,我们随机生成的表达式比较均匀,括号匹配无误,计算结果正确
五.DLL封装和对接
六.结对编程感悟
七.PSP表格
以上是关于结对作业---四则运算(Core 第四组)的主要内容,如果未能解决你的问题,请参考以下文章