题解 | 看我!

简单计算器

https://www.nowcoder.com/practice/5759c29a28cb4361bc3605979d5a6130

#include <iostream>
#include <unordered_map>
#include <stack>
#include <string>
using namespace std;

unordered_map<char,int> um={
    {'#',0},{'$',1},{'+',2},{'-',2},{'*',3},{'/',3}
};
double calculate(double,double,char );
int main() 
{
    ios::sync_with_stdio(false);
    // stack<char> ops;
    // stack<double> res;
    string todouble,todo;
    char c;
    while (getline(cin,todo)) 
    {
        if(todo=="0")
        {
            break;
        }
        stack<char> ops;
        stack<double> res;
        todo=todo+" $";
        ops.push('#');
        todouble.clear();
        for(int i=0;i<todo.size(); )
        {
            c=todo[i];
            if(c<='9'&&'0'<=c)
            {
                todouble.push_back(c);++i;
            }
            else if(c==' ')
            {
                if(todouble!="")
                {
                    res.push(stod(todouble));
                    todouble.clear();
                }
                ++i;

            }
            else
            {
                if(um[ops.top()]<um[c])
                {
                    ops.push(c);++i;
                }
                else
                {
                    double a= res.top();res.pop();
                    double b= res.top();res.pop();
                    char cc=ops.top();ops.pop();
                    double ans=calculate(b,a,cc);
                    res.push(ans);

                }
            }
        }
        printf("%.2f\n",res.top());
        
    }
}

double calculate(double a,double b,char c)
{
    switch (c)
    {
        case '+':
            return a+b;
        case '-':
            return a-b;
        case '*':
            return a*b;
        case '/':
            return a/b;
    }
    return 0;
     
}

// 64 位输出请用 printf("%lld")

全部评论

相关推荐

吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
那一天的Java_J...:他本来公司就是做这个的,不就是正常的游戏客户端和服务器开发,软硬件联动,有啥恶心不恶心的,提前告诉你就是怕你接受不了,接受不了就没必要再往后走流程浪费时间,虽然这公司是一坨。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务