zoukankan      html  css  js  c++  java
  • 软件工程作业 四则运算(一)

    软件工程的课上老师布置了一个题目,要求实现一个四则运算程序,可以从txt文件中读取算式并运算结果(要支持分数),判断用户输入的结果是否正确并给出正确答案。

    完成这个题目我用到了之前数据结构上机题的程序,在那个上机题中实现了中缀表达式转后缀表达式并运算。我这次的作业程序是以那个为基础改的。要实现这次题目的功能要解决的问题主要有以下几点:

      1.要读取算式并运算,需要将读取的中缀表达式转换为后缀表达式才可以运算。

      2.需要支持分数运算,要定义一个分数类来存储分数的分子和分母。

    由于之前的程序结构并不是很好,接口定义也不好可重用性不强。所以这次对代码做了很大修改,这也从一方面体现了软件工程的意义,之前的代码只是为了完成要求而实现的,结构设计不好并且不规范导致其易用性、可移植性不强,这次又花了很多功夫大量修改之前的代码来满足这次的题目。

    下面是我分数类的代码

    1 class num {
    2 public:
    3  int numerator;    //分子
    4  int denominator;   //分母
    5 };

    下面是我对分数运算的实现

     1 void compute(char op, num a, num b) {
     2   switch (op) {
     3    num result;
     4   case'+':result.denominator = a.denominator*b.denominator;
     5    result.numerator = b.denominator*a.numerator + b.numerator*a.denominator;
     6    s.push(result);
     7    break;
     8   case'-':result.denominator = a.denominator*b.denominator;
     9    result.numerator = b.numerator*a.denominator - a.numerator*b.denominator;
    10    s.push(result);
    11    break;
    12   case'*':result.denominator = a.denominator*b.denominator;
    13    result.numerator = a.numerator*b.numerator;
    14    s.push(result);
    15    break;
    16   case'/':if (a.numerator == 0.0) {
    17    cerr << "除数为0!" << endl;
    18    clear();
    19   }
    20     else {
    21      result.numerator = b.numerator*a.denominator;
    22      result.denominator = b.denominator*a.numerator;
    23      s.push(result);
    24     }
    25     break;
    26   }
    27  }

    运行效果如图,左方为txt文档内容

    小结:完成了分数运算的基本功能,不过还有很多功能不完善。比如结果只能全部输入为分数形式要不不识别,没有约分功能等。会在之后添加完善这些功能。

  • 相关阅读:
    P1144 最短路计数 题解 最短路应用题
    C++高精度加减乘除模板
    HDU3746 Teacher YYF 题解 KMP算法
    POJ3080 Blue Jeans 题解 KMP算法
    POJ2185 Milking Grid 题解 KMP算法
    POJ2752 Seek the Name, Seek the Fame 题解 KMP算法
    POJ2406 Power Strings 题解 KMP算法
    HDU2087 剪花布条 题解 KMP算法
    eclipse创建maven项目(详细)
    maven的作用及优势
  • 原文地址:https://www.cnblogs.com/bjut13070017/p/5243779.html
Copyright © 2011-2022 走看看