首页 > 其他分享 >w3-4 后缀表达式

w3-4 后缀表达式

时间:2023-04-19 21:23:58浏览次数:30  
标签:ch 后缀 top pop w3 push 表达式 tmp2

#include <iostream>
#include <stack>
using namespace std;
long long tmp1,tmp2,tmp3;
int main() {
    stack<long long>a;
    char ch;
    cin>>ch;
    while(ch!='@'){//到@停止
        if(ch>='0'&&ch<='9'){//当输入数字字符时
            tmp1=ch-'0';
            cin>>ch;
            while(ch>='0'&&ch<='9'){//用tmp1记录该数字
                tmp1*=10;
                tmp1+=ch-'0';
                cin>>ch;
            }
            a.push(tmp1);//进栈
        }
        if(ch=='+'){
            tmp2=0;
            tmp2+=a.top();
            a.pop();
            tmp2+=a.top();
            a.pop();
            a.push(tmp2);
        }
        else if(ch=='-'){
            tmp2=0;
            tmp2-=a.top();
            a.pop();
            tmp2+=a.top();
            a.pop();
            a.push(tmp2);
        }
        else if(ch=='*'){
            tmp2=0;
            tmp2+=a.top();
            a.pop();
            tmp2*=a.top();
            a.pop();
            a.push(tmp2);
        }
        else if(ch=='/'){
            tmp2=0;
            tmp3=a.top();
            a.pop();
            tmp2+=a.top();

            a.pop();
            a.push(tmp2/tmp3);
        }
        cin>>ch;
    }
    cout<<a.top();
    return 0;
}

题目描述

所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。

如:3*(5-2)+73*(5-2)+7 对应的后缀表达式为:3.5.2.-*[email protected]*7.+@。在该式中,@ 为表达式的结束符号。.为操作数的结束符号。

输入格式

输入一行一个字符串 ss,表示后缀表达式。

输出格式

输出一个整数,表示表达式的值。

输入输出样例

输入 #1
3.5.2.-*7.+@
输出 #1
16

说明/提示

数据保证,1≤∣s∣≤501≤∣s∣≤50,答案和计算过程中的每一个值的绝对值不超过 109109。

 


很经典的栈的应用

标签:ch,后缀,top,pop,w3,push,表达式,tmp2
From: https://www.cnblogs.com/lijunjie03/p/17334676.html

相关文章

  • 正则表达式
    正则表达式的基本知识正则表达式是一种描述字符串结果的语法规则,是一个特定的格式化模式,可以匹配、替换、截取匹配的字符串。常用的语言基本上都有正则表达式,如JavaScript、java等。其实,只有了解一种语言的正则使用,其他语言的正则使用起来,就相对简单些。行定位符(^与$)行定位符是......
  • 中缀表达式转后缀表达式(c++)
    1.初始化两个栈:运算符栈s1和储存中间结果的栈s2;2.从左至右扫描中缀表达式;3.遇到操作数时,将其压s2;4.遇到运算符时,比较其与s1栈顶运算符的优先级:  1.如果s1为空,或栈顶运算符为左括号“(”,则直接将此运算符入栈;  2.否则,若优先级比栈顶运算符的高,也将运算符压入s1  3.否则,将s1栈......
  • 正则表达式--正负整数
    BOOLCheckNumValid(CStringstrIn){ wstringszName=strIn.GetBuffer(); strIn.ReleaseBuffer(); std::wregexreg(L"^(([1-9]+\d*)|(0{1}))(.\d{1,2})?"); std::wsmatchresult; BOOLbIsValid=regex_match(szName,result,reg); if(!bIsValid) {......
  • 在线Cron表达式生成/Linux Cron
    https://cron.qqe2.com/https://www.runoob.com/linux/linux-comm-crontab.html 022**6 ......
  • Lambda表达式
    Lambda表达式Lambda表达式(LambdaExpression)是C++11引入的一个“语法糖”,可以方便快捷地创建一个“函数对象”。从C++11开始,C++有三种方式可以创建/传递一个可以被调用的对象:函数指针仿函数(Functor)Lambda表达式函数指针函数指针是从C语言老祖宗继承下来的东西,比......
  • lambda表达式以及异常
    lambda表达式简化匿名内部类*****前提:​ 函数式接口:只有一个被重写的抽象方法的接口​ @FunctionalInterface强制检测一个接口是否为函数式接口语法:​ ()->{}​ ():重写抽象方法的参数列表​ ->:箭头函数,lambda符号​ {}:重写抽象方法的方法体函数式编程:将函数的实现......
  • Java8新特性2_Lambda表达式
    Lambda表达式为什么要用Lambda表达式Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,将代码像数据一样传递,这样可以写出更简洁、更灵活的代码,作为一个更紧凑的代码风格,使Java语言表达能力得到了提升实例代码Lambda表达式最先替代的就是匿名内部类,假设......
  • Cron表达式介绍与示例
     1.概念介绍Cron表达式是一个具有时间含义的字符串,字符串以5~6个空格隔开,分为6~7个域,格式为XXXXXXX。其中X是一个域的占位符。最后一个代表年份的域非必须,可省略。单个域有多个取值时,使用半角逗号,隔开取值。每个域可以是确定的取值,也可以是具有逻辑意义的特殊字符......
  • html模板里的表达式不能用小于号
    今天用angular写*ngIf="item.cnt <= 5"这个表达式的时候报错,他将<后面的东西当做html标签来看了,怎么办呢可以用html转义字符来表示小于号<换成下面就可以了*ngIf="item.stockCnt &lt= 5"<<&#60;小于号>>&#62;大于号......
  • Cron表达式
    一、字段释义00/5***?秒分时天(月)月天(周)年份(一般省略)二、符号释义*:表示所有可能的值/:表示数值的增量,简单来说,比如分写上0/5表示从0分开始,每隔5分钟?:仅用在天(月)和天(周),表示不指定值,当其中一个有值时,另外一个需要设为?每一个字段都......