首页 > 其他分享 >表达式求值

表达式求值

时间:2022-08-30 11:00:16浏览次数:78  
标签:evel int pop num 求值 include 表达式 op

https://www.acwing.com/problem/content/3305/

#include<iostream>
#include<cstring>
#include<stack>
#include<unordered_map>
#include<string>
#include<algorithm>
using namespace std;
stack<int> num;
stack<char> op;

unordered_map<char,int> mp={{'+',1},{'-',1},{'*',2},{'/',2}};

void evel()
{
    int a=num.top();
    num.pop();
    int b=num.top();
    num.pop();
    char c=op.top();
    op.pop();
    int r=0;
    if(c=='+') r=b+a;
    if(c=='-') r=b-a;
    if(c=='*') r=b*a;
    if(c=='/') r=b/a;
    num.push(r);
}

int main()
{
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
    {
        if(isdigit(s[i]))
        {
            int x=0,j=i;
            while(j<s.size()&&isdigit(s[j]))
            {
                x=x*10+s[j]-'0';
                j++;
            }
            i=j-1;
            num.push(x);
        }
        else if(s[i]=='(')
        {
            op.push(s[i]);
        }
        else if(s[i]==')')
        {
            while(op.top()!='(')
            {
                evel();
            }
            op.pop();
        }
        else
        {
            while(op.size()&&mp[op.top()]>=mp[s[i]])
            {
                evel();
            }
            op.push(s[i]);   
        }
    }
    while(op.size())
    {
        evel();
    }
    cout<<num.top()<<endl;
    return 0;
}

标签:evel,int,pop,num,求值,include,表达式,op
From: https://www.cnblogs.com/xjtfate/p/16638569.html

相关文章

  • 超全的正则表达式速查手册
    一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9][0-9]*)$非零开头的最多带两位小数的数......
  • MFC表达式计算器
    MFC表达式计算器《mfc表达式计算器》该程序应该是一个mfc窗口程序,应该基于对话框。1、支持基本运算符:括号()、+,-,*,/。2、支持复杂运算符:三角函数-sin(x)/cos(x)/tan(x)/......
  • C语言后缀表达式求值
    C语言后缀表达式求值从控制台输入一合法的后缀表达式,其中的运算符只包括+、一、*、/,运算数都是大于等于o的整数(除数不为零),按要求输出计算结果,或输出计算结和相对应的中缀......
  • # 关于C++20Concept(概念)及requires表达式的学习
    关于C++20Concept(概念)及requires表达式的学习Concept(概念)C++20引入了concept以在编译期检查模板实参是否满足指定的约束.如何不用concept进行约束template<typenam......
  • EL表达式和EL运算符
    EL表达式1。概念:ExpressionLanguage表达式语言2.作用:替换和简化jsp页面中java代码的编写3,语法:$表达式}4,注意:"jsp默认支持el表达式的。如果要忽略el表达式1.设......
  • 正则表达式菜鸟教程
    地址: https://c.runoob.com/front-end/854一、校验数字的表达式数字:^[0-9]*$n位的数字:^\d{n}$至少n位的数字:^\d{n,}$m-n位的数字:^\d{m,n}$零和非零开头的数字:^(0|[1-9]......
  • Spring Boot - AOP(面向切面)-切入点表达式
    参考:https://www.cnblogs.com/li3807/p/9002683.htmlhttps://blog.csdn.net/ycf921244819/article/details/106599489/ 切入点指示符用来指示切入点表达式目的,在Spri......
  • 正则表达式
    创建方式构造器varreg1=newRegExp();console.log(reg1);字面量创建varreg1=//;console.log(reg1);使用varreg1=/use/;reg1.test('use');reg1.test......
  • PHP 中的三元运算符和or表达式对比[defined() or define()]
    在php代码中我们经常看到这样的写法:$max=$a>$b?$a:$b;mysql_connect($user,$passwd,$db)ordie($mess);下面对这两种常见的写法做以下说明:第一种:典型的三元运算......
  • Java封装正则表达式工具类
    Java与正则表达式Java中封装了关于正则表达式的内容,但是并不够彻底(抑或是我理解不够彻底),方便起见,在此编写一个小工具类:publicstaticArrayList<ArrayList<String>>......