基础代码-计算后缀表达式
来源:互联网 发布:ubuntu系统安装iso 编辑:程序博客网 时间:2024/05/06 21:46
问题 E: 计算后缀表达式
时间限制: 1 Sec 内存限制: 128 MB题目描述
后缀表达式是将运算符置于两个运算对象之后的一种表达方法,例如 “3+4”用写成后缀表达式后就是 “3 4 +”,而“3-4*5” 写成后缀表达式之后 是“3 4 5 * -”,“(3-4)*5”写成后缀表达式之后是 “3 4 - 5 *”。
写一个程序,读入一个后缀表达式,计算它的值。
输入
输入仅有一行,为待求值的后缀表达式,每两个操作符或者数字之间 用一个空格隔开。数据保证不需要判错,且中间结果可以使用32 位有符号 整数表示。
输入的表达式中仅包含加减乘除四种运算符,且除号代表整除。
输出
输入一个整数,为后缀表达式的值。
样例输入
3 4 -5 *
样例输出
-5
提示
对于所有数据表达式的长度不超过 100000,且一定为合法表达式。
模拟,从头到尾扫一遍,当出现数字+数字+符号时,将结果算出,代替这一组继续进行计算。由于后续表达式没有括号,可以省很多力气,一遍扫完就可以求出结果。
Code:
var q:array[0..100100] of int64; s:ansistring; i,top,len:longint; t,x,y:int64; begin readln(s); len:=length(s); top:=0; i:=1; while i<=len do begin if (s[i]=' ') then begin inc(i); continue; end; if (s[i]='-') then begin if (s[i+1]>='0') and (s[i+1]<='9') then begin t:=0; inc(i); while s[i]<>' ' do begin t:=t*10+ord(s[i])-ord('0'); inc(i); end; inc(top); q[top]:=-t; end else begin x:=q[top]; y:=q[top-1]; top:=top-2; t:=y-x; inc(top); q[top]:=t; end; end; if (s[i]>='0') and (s[i]<='9') then begin t:=0; while s[i]<>' ' do begin t:=t*10+ord(s[i])-ord('0'); inc(i); end; inc(top); q[top]:=t; end; if (s[i]='+') then begin x:=q[top]; y:=q[top-1]; top:=top-2; t:=y+x; inc(top); q[top]:=t; end; if (s[i]='*') then begin x:=q[top]; y:=q[top-1]; top:=top-2; t:=y*x; inc(top); q[top]:=t; end; if (s[i]='/') then begin x:=q[top]; y:=q[top-1]; top:=top-2; t:=y div x; inc(top); q[top]:=t; end; inc(i); end; writeln(q[top]); end.
阅读全文
0 0
- 基础代码-计算后缀表达式
- 后缀表达式计算的代码实现
- 计算后缀表达式
- 计算后缀表达式
- 后缀表达式计算
- sicily 后缀表达式计算
- 后缀表达式计算
- 后缀表达式的计算
- 后缀表达式的计算
- 后缀表达式计算
- 后缀表达式计算
- 后缀表达式的计算
- 计算后缀表达式
- 后缀表达式计算结果
- 后缀表达式计算
- 后缀表达式的计算
- 后缀表达式的计算
- 1005. 后缀表达式计算
- STM32输出调试信息-printf重定向到串口
- NOIP2015信息传递(洛谷2661)
- 找出数组 arr 中重复出现过的元素
- 利用LabWindows/CVI进行仪表控制编程示例
- list,set的使用
- 基础代码-计算后缀表达式
- 前端资料汇总
- Python之‘’控制流‘’
- 大数据的典型应用场景及展望-札记
- java中的匿名内部类总结
- java读入文件的方法
- spring core与context理解
- <img>等标签在指定容器中水平垂直居中的几种实现方法
- 1016部分A+B(模拟)