HDU 1237 简单计算器 —— stackstringstream 的使用
Posted bjxqmy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1237 简单计算器 —— stackstringstream 的使用相关的知识,希望对你有一定的参考价值。
题目描述
http://acm.hdu.edu.cn/showproblem.php?pid=1237
代码示例
#include<iostream>
#include<stack>
#include<string>
#include<sstream>
using namespace std;
int main(){
string tem;
while(getline(cin,tem)&&tem!="0"){
tem+=‘ ‘;//最后一个数字不用做单独处理
stack<double>a;stack<string>b;//数字栈;字符栈
string s="";
for(int i=0;i<tem.length();i++){
if(tem[i]!=‘ ‘){
s+=tem[i];
continue;
}
if(s=="+"||s=="-"||s=="*"||s=="/"){
b.push(s);
}
else{
//string 转 double
stringstream ss;
double nums;
ss<<s;
ss>>nums;
if(b.empty()||b.top()=="+"){
a.push(nums);
}
else if(b.top()=="-"){
b.pop();
a.push(-nums);
}
else if(b.top()=="*"){
b.pop();
double x=a.top();a.pop();
a.push(x*nums);
}
else if(b.top()=="/"){
b.pop();
double x=a.top();a.pop();
a.push(x/nums);
}
}
s="";
}
double sum=0;
while(!a.empty()){
sum+=a.top();
a.pop();
}
printf("%.2f
",sum);
}
}
知识点:
以上是关于HDU 1237 简单计算器 —— stackstringstream 的使用的主要内容,如果未能解决你的问题,请参考以下文章