c++ - 基本计算器,使用逆波兰表示法
问题描述
我正在尝试制作一个基本的计算器,使用string
从double
. 输入是:82+5*8-4/
应该按照(((8 + 2) * 5) - 8) / 4
标准表示法读取的内容。
想要的输出是 10.5,但我的输出是 106.962。
你能向我解释我做错了什么吗?
据我所见,我在双重切换的字符串中做错了,但我是 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);
}
解决方案
使用评论,我现在开始工作了:
#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);
}
推荐阅读
- node.js - 尝试在谷歌表格 API 中使用“附加”时出现无效值错误
- javascript - JS错误:
.contains 不是函数,不知道为什么 - c# - 将“任何 CPU/首选 32 位”设置为 VS 中的默认构建设置背后的基本原理
- python-3.x - 加入路径以检查文件是否存在时出错
- javascript - Javascript数学函数没有加起来
- android - 通知通道不播放我在 setsound 中发送的 URI(来自 RAW 文件夹)
- java - Micronaut cli graphql 设置
- c# - 如何获取字符串内部数据类型的大小?
- fortran - 为什么当我更改结果变量的名称时,使用 f2py 编译的 Fortran 函数返回零?
- dictionary - 使用静态映射的类无法编译