结对编程项目进展——第三周

---恢复内容开始---

  这一周,我和我的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;
     }
 }

---恢复内容结束---

原文地址:https://www.cnblogs.com/bjut13062222/p/5350334.html