首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基本计算器,使用反向波兰语记法

基本计算器,使用反向波兰语记法
EN

Stack Overflow用户
提问于 2021-10-10 15:03:58
回答 1查看 106关注 0票数 0

我正在尝试做一个基本的计算器,使用反向波兰语表示法,从string获得输入并输出一个double。输入是:82+5*8-4/,在标准表示法中应该读作(((8 + 2) * 5) - 8) / 4

想要的输出是10.5%,但我的输出是106.962。

你能给我解释一下我哪里做错了吗?

据我所知,我在double switch的字符串中做了一些错误的事情,但我是C++的新手,我不知道问题到底是什么。

这是我尝试过的:

代码语言:javascript
运行
复制
#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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-10 15:33:13

使用注释,我现在让它工作了:

代码语言:javascript
运行
复制
#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);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69516333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档