hdu1237(STL)
来源:互联网 发布:火牛软件 编辑:程序博客网 时间:2024/06/06 06:53
简单计算器
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 10564 Accepted Submission(s): 3407
Problem Description
读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。
Input
测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。
Output
对每个测试用例输出1行,即该表达式的值,精确到小数点后2位。
Sample Input
1 + 24 + 2 * 5 - 7 / 110
Sample Output
3.0013.36本题是个简易表达式的计算问题,将操作数和操作符分别入不同的两个栈,读入一个操作数则直接入栈,读入一个操作符则与当前操作符栈顶元素比较,若小于则栈顶元素操作符出栈,操作数栈顶两元素出栈进行运算后入数栈,直至读入操作符大于等于当前操作符栈顶操作符优先级。处理直到字符为空且操作符栈为空,此时操作数栈只剩最终答案。#include<iostream>#include<stack>#include<cstdio>#include<cstring>#include<string>using namespace std;void trans(string &str){int i;stack<double>num;stack<char>op;double a1;double a2;char ch;for(i=0;i<str.size();i++){if(str[i]==' '){continue;}else if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/'){while(!op.empty()){ch=op.top();if((ch=='+'||ch=='-')&&(str[i]=='+'||str[i]=='-')||(ch=='*'||ch=='/')){a1=num.top();num.pop();a2=num.top();num.pop();if(ch=='+'){a2=a1+a2;num.push(a2);}else if(ch=='-'){a2=a2-a1;num.push(a2);}else if(ch=='*'){a2=a2*a1;num.push(a2);}else{a2=a2/a1;num.push(a2);}op.pop();}elsebreak;}op.push(str[i]);}else {int a=0;while(str[i]>='0'&&str[i]<='9'){a=a*10+str[i]-'0';i++;}num.push((double)(a));i--;//}}while(!op.empty()){ch=op.top();a1=num.top();num.pop();a2=num.top();num.pop();if(ch=='+'){a2=a1+a2;num.push(a2);}else if(ch=='-'){a2=a2-a1;num.push(a2);}else if(ch=='*'){a2=a2*a1;num.push(a2);}else{a2=a2/a1;num.push(a2);}op.pop();}printf("%.2lf\n",num.top());}int main(){string str;while(getline(cin,str)){if(str=="0")break;trans(str);}return 0;}
- hdu1237(STL)
- HDU1237
- HDU1237
- hdu1237
- HDU1237(堆栈应用)
- hdu1237 简单计算器
- HDU1237:简单计算器
- hdu1237简单计算器
- 栈的应用HDU1237
- hdu1237简单计算器
- 栈 hdu1237 简单计算器
- HDU1237简单计算器
- hdu1237 简单计算器
- hdu1237-简单计算器
- HDU1237 简单计算器
- [HDU1237]-简单计算器
- HDU1237-简单计算器
- HDU1237 简单计算器【堆栈】
- java 单例模式 (Singleton)
- Debug和Release有什么区别
- poj2891(中国剩余定理)
- C# 中 控件中只能输入数字 KeyPress 事件
- hdu 1010 Tempter of the Bone
- hdu1237(STL)
- HDU 4607 Park Visit
- 1 Java学习之 基本数据类型
- 无法定位序数4445于动态链接库LIBEAY32.dll上
- Hold住CSS布局新属性
- Zend Studio 目前公认的最强大的PHP编辑器
- 50 OHM阻抗线设计
- df、du、fdisk:Linux磁盘管理三板斧的使用心得
- 排序算法整理(1)插入排序