zoukankan      html  css  js  c++  java
  • 对于运算表达式的运算优先级的解决方法(不带括号)

    #include<iostream>
    #include<cstring>
    #include<iomanip>
    #include<string>
    #include<stack>
    using namespace std;
    char a[6];
    stack<int>Num;
    stack<char>Operator;
    int main()
    {
        int n;
        cin>>n;
        int t=n;
        while(t--)
        {
            while(!Num.empty())Num.pop();
            while(!Operator.empty())Operator.pop();
            int t1=1;
            for(int i=1; i<=n; i++)
            {
                cin>>a[i];
                if(i==1)
                {
                    Num.push(a[i]-'0');
                }
                else
                {
                    if(t1%2==0)
                    {
                        Operator.push(a[i]);
                    }
                    else
                    {
                        Num.push(a[i]-'0');
                        if(Operator.top()=='*')
                        {
                            int t1=Num.top();
                            Num.pop();
                            int t2=Num.top();
                            Num.pop();
                            Num.push(t1*t2);
                            Operator.pop();
                        }
                        else if(Operator.top()=='/')
                        {
                            int t1=Num.top();
                            Num.pop();
                            int t2=Num.top();
                            Num.pop();
                            Num.push(t2/t1);
                            Operator.pop();
                        }
                        else if(Operator.top()=='%')
                        {
                            int t1=Num.top();
                            Num.pop();
                            int t2=Num.top();
                            Num.pop();
                            Num.push(t2%t1);
                            Operator.pop();
                        }
                    }
                }
                t1++;
            }
            int e=Num.top();
            int flag=1;
            int sum=0;
            while(!Operator.empty())
            {
                flag=0;
                char temp=Operator.top();
                Operator.pop();
                int t1=Num.top();
                Num.pop();
                int t2=Num.top();
                Num.pop();
                if(temp=='+')
                {
                    Num.push(t1+t2);
                }
                else if(temp=='-')
                {
                    Num.push(t2-t1);
                }
                sum=Num.top();
            }
            if(flag==0)
                cout<<sum<<endl;
            else
            {


                cout<<e<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    [转]虚拟机下Redhat Linux系统的Mplayer安装实现
    结构定义中元素位置排列问题
    RPM 的介绍和应用
    yum 升级 rhe15
    Microsoft Access Data Types
    Eclipse配置SVN
    搭建本地YUM软件仓库
    2011年度最佳开源软件:Bossie奖结果公布
    Linux中文man在线手册
    PID算法
  • 原文地址:https://www.cnblogs.com/letlifestop/p/10263006.html
Copyright © 2011-2022 走看看