我有这个任务:
我们想制作一个可以加减整数的简单计算器,并且可以接受由符号+和 - 以及非负整数组成的任意长的数学公式。
想象一下,你有一个文件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;
}
}
答案 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
始终是运营商的“左侧”。新值将是运营商的“正确”方。