我正在尝试做一个基本的计算器,使用反向波兰语表示法,从string
获得输入并输出一个double
。输入是:82+5*8-4/
,在标准表示法中应该读作(((8 + 2) * 5) - 8) / 4
。
想要的输出是10.5%,但我的输出是106.962。
你能给我解释一下我哪里做错了吗?
据我所知,我在double switch的字符串中做了一些错误的事情,但我是C++的新手,我不知道问题到底是什么。
这是我尝试过的:
#include <iostream>
int main() {
std::string input = "82+5*8-4/";
double output, num;
num = input.at(0);
for (int i = 1; i < input.size() - 1; i = i + 2) {
switch (input.at(i + 1)) {
case '+':
output = num + input.at(i);
break;
case '-':
output = num - input.at(i);
break;
case '*':
output = num * input.at(i);
break;
case '/':
output = num / input.at(i);
break;
default:
break;
}
num = output;
}
std::cout << output << std::endl;
return (0);
}
发布于 2021-10-10 15:33:13
使用注释,我现在让它工作了:
#include <iostream>
int main() {
std::string input = "82+5*8-4/";
double output, num1;
num1 = input[0] - '0';
for (int i = 1; i < input.size() - 1; i = i + 2) {
double num2 = input[i] - '0';
switch (input.at(i + 1)) {
case '+':
output = num1 + num2;
break;
case '-':
output = num1 - num2;
break;
case '*':
output = num1 * num2;
break;
case '/':
output = num1 / num2;
break;
default:
break;
}
num1 = output;
}
std::cout << output << std::endl;
return (0);
}
https://stackoverflow.com/questions/69516333
复制相似问题