【栈/中缀转后缀】HDU1237简单计算器
来源:互联网 发布:软件机器人 编辑:程序博客网 时间:2024/05/16 10:16
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1237
#include<bits/stdc++.h>using namespace std;int Priority(char op){if(op=='#') return 0;if (op=='+' || op=='-') return 1; if (op=='*' || op=='/') return 2; else return -1;}double Operate(double x,double y,char op){ if (op=='+') return x+y; if (op=='-') return x-y; if (op=='*') return x*y; if (op=='/') return x/y; else return -1;}void cal(string s){double num=0;stack<double>numSt;//数字栈;stack<char>charSt;//符号栈;for(int i=0;i<s.size();i++){if(s[i]==' ') continue;if(isdigit(s[i])){num=0;while(isdigit(s[i])||s[i]=='.'){num=num*10+s[i]-'0';i++;}numSt.push(num);}else{while(!charSt.empty()&&Priority(charSt.top())>=Priority(s[i])){double y=numSt.top();numSt.pop();double x=numSt.top();numSt.pop();char op=charSt.top();charSt.pop();numSt.push(Operate(x,y,op));}charSt.push(s[i]);}}while(!charSt.empty()){double y=numSt.top();numSt.pop();double x=numSt.top();numSt.pop();char op=charSt.top();charSt.pop();numSt.push(Operate(x,y,op));}printf("%.2lf\n",numSt.top());return;}int main(){string s;while(getline(cin,s)&&(s[0]!='0'||s.size()!=1)){cal(s);}return 0;}
阅读全文
0 0
- 【栈/中缀转后缀】HDU1237简单计算器
- HDU1237--简单计算机--中缀转后缀
- HDU1237简单计算器-中缀表达式-后缀表达式
- 栈 hdu1237 简单计算器
- 简单计算器 hdu1237(模拟栈)
- hdu1237简单计算器-栈实现
- 中缀转后缀并求值(简单计算器的核心)
- hdu1237简单的计算器(栈)
- HDU1237 简单计算器 【栈】+【逆波兰式】
- hdu1237 简单计算器 (模拟+栈)
- hdu1237 简单计算器
- HDU1237:简单计算器
- hdu1237简单计算器
- hdu1237简单计算器
- HDU1237简单计算器
- hdu1237 简单计算器
- hdu1237-简单计算器
- HDU1237 简单计算器
- 软件工程:敏捷过程与极限编程
- Linux文件操作命令
- Python pip install 加速
- 获取随机日期
- 机器学习笔记 介绍篇
- 【栈/中缀转后缀】HDU1237简单计算器
- MySQL总结—基础篇(三)
- Spring学习记录
- hdu 1022
- java异常体系及注意事项
- 《Java编程思想》转型与警告
- C语言 常犯的九个小错误
- 学习Java小结-3
- Kotlin一步一个脚印学习基础一