长方程加法/减法计算器,用于从文本文件中提取运算符和数字

时间:2018-03-01 16:05:03

标签: c++

我有这个任务:

  

我们想制作一个可以加减整数的简单计算器,并且可以接受由符号+和 - 以及非负整数组成的任意长的数学公式。

想象一下,你有一个文件formula.txt,其总和公式如下:


    100 + 50 - 25 + 0 + 123 - 1

到目前为止,我已经创建了一个程序来读取文件,并且只找到第一个操作数和两个数字(所以基本上它只是第一个条件,IE' 100 + 50 - 25&#39给我150 ...)我只需要帮助了解我的程序在第一轮之后如何回复...我确定我的switch语句出了问题。

非常感谢你!

 char op;
    int left_num, right_num, sum;
    sum = 0; 
    while(cin >> left_num >> op >> right_num) { 

    switch(op) {
        case '+':
            sum_new = left_num + right_num;
            sum = sum_new + sum
            break;

        case '-': 
            sum = sum - right_num
            break;

        }

    }

2 个答案:

答案 0 :(得分:0)

你可以沿着这条路做点什么:

1. Read the first operand (let's say num)
2. While there are operator and operands to read
    2.1. Your switch updates the first operand (num)
3. num is the result

答案 1 :(得分:0)

我推荐第一个值的特殊情况。所有剩余的术语都是 operator value

的形式
int sum;
std::cin >> sum;  // Read the first value as the sum.
char opr;         // Operator character
int  value;       // New value or term.
while (cin >> opr >> value)
{
  switch (opr)
  {
    case '+': 
      sum += value;
      break;
    case '-':
      sum -= value;
      break;
    default:
      std::cerr << "Invalid operator: " << opr << "\n";
      break;
  }
}

sum始终是运营商的“左侧”。新值将是运营商的“正确”方。