zoukankan      html  css  js  c++  java
  • Problem H: STL——表达式求值

    Problem H: STL——表达式求值

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 3439  Solved: 2052
    [Submit][Status][Web Board]

    Description

    给出一个表达式,求出其值。表达式中只存在 +、-、*、三种运算,我们假设表达式是正确的,
          且不存在除数为零的情况。
     
     
     
     

    Input

    第一行输入一个正整数 n(1<=n<=30) ,表示有表达式 n 个数(每个数均小于100),表达式中只有数值(都是大于零的数)
          和运算符(包括+、-、*、=四种运算符,其中 = 只在表达式最后,表示一个表达式输出结束,且整个表达式不存在空格)
     

    Output

    表达式的值(表达式的值不会超出 double 的范围并保留两位小数)
     
     

    Sample Input

    5
    1*2*3*4*5=
    5
    5-1-2+3+4=

    Sample Output

    120.00
    9.00

    HINT

    使用STL的stack容易实现。


    Append Code

    #include <iostream>
    #include <stack>
    #include <iomanip>
    using namespace std;
    int main()
    {
        int N;
        while(cin>>N)
        {
            double temp;
            char arr;
            stack<double> num;
            cin>>temp;
            num.push(temp);
            for(int i=1; i<N; i++)
            {
                cin>>arr>>temp;
                if(arr=='+')
                num.push(temp);
    
                if(arr=='-')
                num.push(-temp);
    
                if(arr=='*')
                {
                // 原理:1+2*3= 原是栈顶为2, 现将3与2相乘删除栈顶2,把乘积存为栈顶
                    temp=num.top()*temp;//将输入的数与栈中的栈顶数相乘
                    num.pop();//将原栈顶数删除
                    num.push(temp);//用temp替换为栈顶
                }
            }
            cin>>arr;//输入最后的“=”。
            double sum=0;
            while(!num.empty())
            {
                sum+=num.top();
                num.pop();
            }
            cout<<setprecision(2)<<fixed<<sum<<endl;
        }
    }
    

      

    作者:7oDo

    仅供参考,请勿抄袭。

    Hang Hang Hang !!!

  • 相关阅读:
    1026. 程序运行时间(15)
    C语言字符串/数组去重
    1025. 反转链表 (25)
    1024. 科学计数法 (20)
    1023. 组个最小数 (20)
    1022. D进制的A+B (20)
    1021. 个位数统计 (15)
    1020. 月饼 (25)
    前端001/正则表达式
    SSM001/构建maven多模块项目
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/9123330.html
Copyright © 2011-2022 走看看