pat02-线性结构3. 求前缀表达式的值(25)
02-线性结构3. 求前缀表达式的值(25)
算术表达式有前缀表示法、中缀表示法和后缀表示法等形式。前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4。请设计程序计算前缀表达式的结果值。
输入格式说明:
输入在一行内给出不超过30个字符的前缀表达式,只包含+、-、*、\以及运算数,不同对象(运算数、运算符号)之间以空格分隔。
输出格式说明:
输出前缀表达式的运算结果,精确到小数点后1位,或错误信息“ERROR”。
样例输入与输出:
| 序号 | 输入 | 输出 |
| 1 |
+ + 2 * 3 - 7 4 / 8 4 |
13.0 |
| 2 |
/ -25 + * - 2 3 4 / 8 4 |
12.5 |
| 3 |
/ 5 + * - 2 3 4 / 8 2 |
ERROR |
| 4 |
+10.23 |
10.2 |
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
#include<string>
#include<stack>
using namespace std;
int main(){
//freopen("D:\\input.txt","r",stdin);
stack<double> fi;
stack<string> input;
string s; //bool can=true;
while(cin>>s){
input.push(s);
}
while(!input.empty()){
s=input.top();
input.pop();
if(s.length()==&&!(s[]>=''&&s[]<='')){
double a=fi.top();
fi.pop();
double b=fi.top();
fi.pop();
switch(s[]){
case'+':{
//cout<<"+: "<<a+b<<endl;
fi.push(a+b);
break;
}
case'-':{
//cout<<"-: "<<a-b<<endl;
fi.push(a-b);
break;
}
case'*':{
//cout<<"*: "<<a*b<<endl;
fi.push(a*b);
break;
}
case'/':{
if(b==){
printf("ERROR\n");
//can=false;
return ;
}
//cout<<"/: "<<a/b<<endl;
fi.push(a/b);
break;
}
default:{
printf("ERROR\n");
return ;
}
}
}else if((s[]>=''&&s[]<='')||(s.length()>&&!(s[]>=''&&s[]<='')&&(s[]>=''&&s[]<=''))){
double cal=;
int i=;
if(s[i]=='+'||s[i]=='-'){
if(s[i]=='-'){
cal=-;
}
i++;
}
double intpart=,decpart=;
while(i<s.length()&&s[i]!='.'){//注意换算
intpart*=;
intpart+=s[i++]-'';
}
i++;
int j;
for(j=s.length()-;j>=i;j--){
decpart+=s[j]-'';
decpart*=0.1;
}
fi.push(cal*(intpart+decpart));
}else{
printf("ERROR\n");
return ;
}
}
//cout<<fi.top()<<endl; printf("%.1lf\n",fi.top());
return ;
}
pat02-线性结构3. 求前缀表达式的值(25)的更多相关文章
- PTA笔记 堆栈模拟队列+求前缀表达式的值
基础实验 3-2.5 堆栈模拟队列 (25 分) 设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q. 所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数: int IsFull(Sta ...
- 【Zhejiang University PATest】02-3. 求前缀表达式的值
算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,例如2+3*(7-4)+8/4的前缀表达式是:+ + 2 * 3 - 7 4 / 8 4.请设计程序计算 ...
- 3-07. 求前缀表达式的值(25) (ZJU_PAT数学)
题目链接:http://pat.zju.edu.cn/contests/ds/3-07 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.前缀表达式指二元运算符位于两个运算数之前,比如2+3*(7 ...
- 信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)
// 递归法求中缀表达式的值,O(n^2) int calc(int l, int r) { // 寻找未被任何括号包含的最后一个加减号 for (int i = r, j = 0; i >= ...
- openjduge 求简单表达式的值
表达式求值 总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB 给定一个只包含加法和乘法的算术表达式,请你编程计算表达式的值. 输入 输入仅有一行 ...
- K:双栈法求算术表达式的值
相关介绍: 该算法用于求得一个字符串形式的表达式的结果.例如,计算1+1+(3-1)*3-(21-20)/2所得的表达式的值,该算法利用了两个栈来计算表达式的值,为此,称为双栈法,其实现简单且易于理 ...
- [LeetCode] Evaluate Division 求除法表达式的值
Equations are given in the format A / B = k, where A and B are variables represented as strings, and ...
- [LeetCode] 399. Evaluate Division 求除法表达式的值
Equations are given in the format A / B = k, where A and B are variables represented as strings, and ...
- 求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m
private static int fun(int m) { ; ; i <= m; i++) { == ) temp = temp + i; else temp = temp - i; } ...
随机推荐
- .Net Core 项目区域请求设置
.net core 和asp.net MVC区域请求有个区别,这里重点记录一下 asp.net MVC 区域请求直接是/区域名称/控制名称/方法名称,其他不需要设置任何东西,而Core 项目这样请求路 ...
- .net core .NET Core与.NET Framework、Mono之间的关系
.NET Core与.NET Framework.Mono之间的关系 首先想要知道.NET Core与.NET Framework.Mono之间的关系,就必须他们分别是什么,有什么用途? 一. .ne ...
- kali linux之wireshark/tcpdump
抓包嗅探协议分析,必备技能,抓包引擎(linux---libpcap9 windows-----winpcap10) 解码能力优秀 常见协议包 数据包的分层i协议 arp icmp tcp--三次 ...
- 搭建jumpserver堡垒机
环境 系统: CentOS 7 IP: 192.168.244.144 关闭 selinux 和防火墙 # CentOS 7 $ setenforce 0 # 可以设置配置文件永久关闭 $ syst ...
- 查看服务器的ip地址
因测试需要查看服务器的ip地址,故进行搜索. 1.(操作成功的方法)在浏览器输入www.ip.cn,可查询出ip地址: 2.(说明书的操作方法,但我未能查询到ip地址)在浏览器输入http://ip. ...
- python之路径拼接urljoin
方法一:使用+进行路径拼接 url='http://ip/ path='api/user/login' url+path拼接后的路径为'http://ip//api/user/login' 方法二:使 ...
- Django 学习:为窗体加上防机器人的验证机制(验证码功能)
这里我们使用 django-simple-captcha 模块,官方介绍如下:https://github.com/mbi/django-simple-captcha 一键安装: pip instal ...
- 【BZOJ1047】[HAOI2007]理想的正方形 (倍增ST表)
[HAOI2007]理想的正方形 题目描述 有一个\(a*b\)的整数组成的矩阵,现请你从中找出一个\(n*n\)的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入输出格式 输入格式: ...
- SDUT OJ 数据结构实验之排序三:bucket sort
数据结构实验之排序三:bucket sort Time Limit: 250 ms Memory Limit: 65536 KiB Submit Statistic Discuss Problem D ...
- sticky footer布局
一.什么是sticky footer 在网页设计中,Sticky footers设计是最古老和最常见的效果之一.它可以概括如下:如果页面内容不够长的时候,页脚块粘贴在视窗底部:如果内容足够长时,页脚块 ...