结对编程项目进展——第三周
---恢复内容开始---
这一周,我和我的partner一起完成了模块的实现。四则运算生成程序一共分成三个模块:自动生成表达式模块、接收表达式判断用户输入模块和接收表达式字符串计算模块。
模块一:接收表达式字符串计算模块 Calc()
根据教学博客中的要求,Calc函数接收输入的字符串表达式并存储,返回值是一个字符串,例如“5+3'1/2”,输入这个表达式之后模块的返回值就是该字符串,用类Expression实现。
测试代码:
string teststr; cout<<"请输入字符串表达式:"<<endl; getline(cin,teststr); string result = Calc(teststr); cout<<result;
测试结果:
模块二:判断用户输入模块
这个模块用来进行针对用户输入的各种异常处理,对用户的输入错误进行分类,并进行相应提示。
测试代码:
string teststr; cout<<"请输入字符串表达式:"<<endl; getline(cin,teststr); IsErr(teststr);
测试结果:
(1)括号不匹配的问题
(2)多余运算符问题
(3)除数为0问题
模块三:自动生成表达式模块
终于到了用到上次表达式代码的时间了!做出的扩展是:在生成操作数的时候,不再局限于整数范围,加上了负数。所以我们给定的数据范围是[-MaxNum, MaxNum]。
代码如下:
Value::Value(int MaxNum) { int pro = rand() % PRO; //这个随机数控制运算表达式中的分数出现的频率。 if (pro == 0) { demon = rand() % (MaxNum-1) + 1; } else { demon = 1; } int pro1 = rand() % PRO1; //这个随机数控制运算表达式中负数出现的频率 numer = rand() % (demon * MaxNum); if (pro1 == 0) { numer = numer * -1; } }
---恢复内容结束---