前缀式计算

时间限制:1000 ms  |  内存限制:65535 KB
难度:3
 
描述

先说明一下什么是中缀式:

如2+(3+4)*5这种我们最常见的式子就是中缀式。

而把中缀式按运算顺序加上括号就是:(2+((3+4)*5))

然后把运算符写到括号前面就是+(2 *( +(3 4) 5) )

把括号去掉就是:+ 2 * + 3 4 5

最后这个式子就是该表达式的前缀表示。

给你一个前缀表达式,请你计算出该前缀式的值。

比如:

+ 2 * + 3 4 5的值就是 37

 
输入
有多组测试数据,每组测试数据占一行,任意两个操作符之间,任意两个操作数之间,操作数与操作符之间都有一个空格。输入的两个操作数可能是小数,数据保证输入的数都是正数,并且都小于10,操作数数目不超过500。
以EOF为输入结束的标志。
输出
对每组数据,输出该前缀表达式的值。输出结果保留两位小数。
样例输入
+ 2 * + 3 4 5
+ 5.1 / 3 7
样例输出
37.00
5.53 前缀式计算:从后往前遍历,遇到数字压入栈,遇到符号,弹出两个数字,计算
(第一个操作数为先出栈的数),然后压入栈。

 #include<stdio.h>
#include<string.h>
#include<stack>
using namespace std;
double calPerfix(char *input)
{
stack<double> result;
int len = strlen(input) - ;
int n,j,i;
while (len >= )
{
j = len;
double sum = 0.0,dot = 0.0;
if (len == ){
j = ;
n = j;
}
else {
while (input[j] != ' ')
j--;
n = j+;
}
if (input[n] >= '' && input[n] <= ''){
for (i=n; i <= len; i++)
{
if(input[i] >= '' && input[i] <= '')
{
double num = input[i] - '';
sum = sum * + num;
}
else if (input[i] == '.')
{
int l = ;
dot = 0.0;
for (int k=i+; k <= len; k++ )
{
if(input[k] >= '' && input[k] <= '')
{
double num = input[k] - '';
dot += num / l;
l *= ;
i++;
}
}
}
}
sum += dot;
result.push(sum);
}
else {
double one;
switch (input[n])
{
case '+':
sum = result.top();
result.pop();
one = result.top();
result.pop();
sum += one;
result.push(sum);
break;
case '-':
sum = result.top();
result.pop();
one = result.top();
result.pop();
sum -= one;
result.push(sum);
break;
case '*':
sum = result.top();
result.pop();
one = result.top();
result.pop();
sum *= one;
result.push(sum);
break;
case '/':
sum = result.top();
result.pop();
one = result.top();
result.pop();
sum /= one;
result.push(sum);
break;
default:
break;
}
}
len = j - ;
}
return result.top();
}
int main()
{
char input[];
while(gets(input)){
printf("%.2f\n",calPerfix(input));
fflush(stdin);
}
return ;
}

NYOJ 128 前缀式计算的更多相关文章

  1. NYOJ 128 前缀表达式的计算

    前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...

  2. NYOJ128前缀式计算

    前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...

  3. NYOJ128 前缀式计算 【栈】

    前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描写叙述 先说明一下什么是中缀式: 如2+(3+4)*5这样的我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上 ...

  4. 前缀式计算 nyoj

    题目描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括号就是:(2+((3+4)*5)) 然后把运算符写到括号前面就是+(2 *( +(3 ...

  5. NYOJ128 前缀式计算(栈的运用)

    题目信息: http://acm.nyist.net/JudgeOnline/problem.php? pid=128 + 2 * + 3 4 5的值就是 37,详见输入输出. 输入 有多组測试数据, ...

  6. NYOJ--128--前缀式计算(表达式求值)

    前缀式计算 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀式按运算顺序加上括 ...

  7. nyoj-----前缀式计算

    前缀式计算 时间限制:1000 ms  |           内存限制:65535 KB 难度:3   描述 先说明一下什么是中缀式: 如2+(3+4)*5这种我们最常见的式子就是中缀式. 而把中缀 ...

  8. 搜索广告与广告网络Demand技术-流式计算平台

    流式计算平台-Storm 我们以Storm为例来看流式计算的功能是什么. 下面内容引用自大圆的博客.在Storm中,一个实时应用的计算任务被打包作为Topology发布,这同Hadoop的MapRed ...

  9. 流式计算与计算抽象化------《Designing Data-Intensive Applications》读书笔记15

    上篇的内容,我们探讨了分布式计算中的MapReduce与批处理.所以本篇我们将继续探索分布式计算优化的相关细节,并且分析MapReduce与批处理的局限性,看看流式计算是否能给我们在分布式计算层面提供 ...

随机推荐

  1. ubuntu下配置tomcat

    配置tomcat 1.解压 tar -zxvf apache-tomcat-7.0.53.tar.gz 2.修改/bin/catalina.sh cygwin=falsedarwin=falseos4 ...

  2. http 报文 - 转

    1. http 报文 2. HTTP报文

  3. docker stop 与 docker kill的区别

    docker stop 与 docker kill 均可以将容器停掉,但二者究竟有什么区别呢?首先,摘录一下官网对这两个功能的描述: docker stop: Stop a running conta ...

  4. 利用python进行数据分析 (学习笔记)

    第一章:准备工作 1.重要的Python库 (1)NumPy:Python科学计算的基础包.功能有:

  5. PHP高级架构技术年度大盘点

    2015年1月的最后一个周末,上海的冬季虽不如北方的雪窖冰天,但腊月的寒风也足以让人猫 在家中不愿出门.可是,在华美达酒店的一个会议室中,却人声鼎沸.春意融融,第三期商派技术沙龙正在火热进行,本期沙龙 ...

  6. js原型 prototype

    js中只有构造函数(所有函数)拥有prototype属性对象

  7. [ios][opengles]OpenGL ES基础知识简介

    参考: http://www.cnblogs.com/shangdahao/archive/2011/11/05/2233587.html 3D变换:模型,视图,投影与Viewport: http:/ ...

  8. EF查询分页

    static List<T> GetPageList(Func<T,bool> whereLambda,Func<T,object> orderLambda,int ...

  9. syntactically incorrect() 404

    遇到这个错误就来记录一下吧. 这个错误是springMVC报出的错误.大致的意思就是form传值的类型和controller中的参数不符. 有可能是名字错误,有可能是类型不对.比如前面你传来的是  p ...

  10. JS 滚动效果

    地址: https://github.com/aamirafridi/jQuery.Marquee <script language="JavaScript" src=&qu ...