简单计算器

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 19060    Accepted Submission(s): 6711

Problem Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
 
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
 
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
 
Sample Input
1 + 2
4 + 2 * 5 - 7 / 11
0
 
Sample Output
3.00
13.36
 
Source
 
Recommend

JGShining   |   We have carefully selected several similar problems for you:  1230 1235 1234 1236 1229

模拟计算

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
using namespace std;
int main()
{
char ch[];
while(gets(ch)&&strcmp(ch,""))
{
stack<char>s;
stack<double>n;
for(int i=;ch[i];i++)
{
if(ch[i]>=''&&ch[i]<='')
{
double tem=;
while(ch[i]>=''&&ch[i]<='')
{
tem=tem*+ch[i]-'';
i++;
}
i--;
n.push(tem);
}
else if(ch[i]=='+'||ch[i]=='-')
{
if(!s.empty())
{
char c=s.top();
s.pop();
double x1=n.top();
n.pop();
double x2=n.top();
n.pop();
if(c=='+')
x2+=x1;
else x2-=x1;
n.push(x2);
}
s.push(ch[i]);
}
else if(ch[i]=='*'||ch[i]=='/')
{
double x1=n.top();
n.pop();
double x2=;
int j=i;
i+=;
while(ch[i]>=''&&ch[i]<='')
{
x2=x2*+ch[i]-'';
i++;
}
i--;
if(ch[j]=='*')
x1*=x2;
else x1/=x2;
n.push(x1);
}
}
while(!s.empty())
{
char c=s.top();
s.pop();
double x1=n.top();
n.pop();
double x2=n.top();
n.pop();
if(c=='+')
x2+=x1;
else x2-=x1;
n.push(x2);
}
printf("%.2lf\n",n.top());
}
return ;
}

*HDU 1237 栈的更多相关文章

  1. HDU 1237 简单计算器 栈

    额,题目是中文的,题意就不用说了= =都看懂喽.写个字符串先把这行计算式存进去,不过不能存一个算一个,因为考虑到乘除法比加减法优先的原则,如果是加号减号就先存着等待计算,如果是乘号除号就直接算出来值就 ...

  2. hdu 1237 简单计算器(栈处理)

    简单计算器 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submi ...

  3. HDU 1237 简单计算器(栈+stringstream)

    提供几份代码,这题的输入可以用stringsteam处理,先处理乘除后处理加减,正常思路,但是后面统计加减法的时候,对栈的运用错了,我用的时候相当于给它多加了几个括号就错了. 正确的简单解法就是,加法 ...

  4. HDU 1237

    http://acm.hdu.edu.cn/showproblem.php?pid=1237 表达式计算,方法是中缀转后缀,再计算.中间处理用栈操作 讲解看http://blog.csdn.net/a ...

  5. 解决HDU爆栈的问题

    转载:http://forum.byr.edu.cn/article/ACM_ICPC/51264 大家懂的,鉴于HDU用的是windows服务器,所以stack大小及其坑爹,稍微深一点的递归栈就会s ...

  6. hdu 1237 简单计算器

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=1237 简单计算器 Description 读入一个只包含 +, -, *, / 的非负整数计算表达式, ...

  7. hdu 1237 简单计算器 (表达式求值)【stack】

    <题目链接> 题目大意: 读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值.  Input测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符, ...

  8. 随手练——HDU 1237 表达式求值(输入格式典型)

    坑了老子半天,结果是 float 范围不够!!! 基本思想: 开一个符号栈,一个数字栈: 碰到数字就入栈,碰到符号就与栈顶符号进行对比,如果当前符号优先级小于栈顶符号,数字栈弹出两个数进行栈顶符号运算 ...

  9. HDU 2646 栈的应用 STL

    Expression Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

随机推荐

  1. 打开eclipse报错

    隔了一段时间没用eclipse, 打开之后报错: 从报错上来看是因为java版本太低导致的. 我打开cmd, 运行java -version 后 发现java 版本已经更新到了1.8 然后就有点懵. ...

  2. 关于Python对齐问题

    最近在学习父与子的编程之旅,书上有一个关于猜数的游戏代码,自己敲了以后老是不对,仔细检查后发现是对齐问题. 废话不说了,直接上图: 上面是正确的,下面这个是有问题的,大家可以看下Python代码如果没 ...

  3. Date、Calender类及日期和字符串转换

    Calendar是一个抽象类,抽象类java.util.Calendar 不可以通过new来获取一个实例,可以通过类方法getinstance()获取此类型的一个通用的对象 ①用法: Calendar ...

  4. mysql循环操作

    #如果存在jyf_test存储过程则删掉 DROP PROCEDURE IF EXISTS jyf_test; DELIMITER // #创建存储过程 CREATE PROCEDURE jyf_te ...

  5. AngularJS的简单使用

    官网下载:AngularJS 路由视图需要:Angular-Route.js 基于zepto的轻量级的 JavaScript UI 库: App.js  用于开发跨平台的移动Web应用 <!DO ...

  6. python shutil.copy()用法

    shutil.copyfile(src, dst):复制文件内容(不包含元数据)从src到dst. DST必须是完整的目标文件名; 如果src和dst是同一文件,就会引发错误shutil.Error. ...

  7. 【Java EE 学习 52】【Spring学习第四天】【Spring与JDBC】【JdbcTemplate创建的三种方式】【Spring事务管理】【事务中使用dbutils则回滚失败!!!??】

    一.JDBC编程特点 静态代码+动态变量=JDBC编程. 静态代码:比如所有的数据库连接池 都实现了DataSource接口,都实现了Connection接口. 动态变量:用户名.密码.连接的数据库. ...

  8. 公众号第三方平台开发 获取 component_verify_ticket 2015-07-05 10:16 59人阅读 评论(0) 收藏

    8.推送component_verify_ticket协议 在公众号第三方平台创建审核通过后,微信服务器会向其"授权事件接收URL"每隔10分钟定时推送component_veri ...

  9. ppmoney 总结一

    1.JQ $.get() <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  10. AgileEAS.NET SOA 中间件平台.Net Socket通信框架-介绍

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...