#include <cstdio>
#include <string>
#include <stack>
#include <iostream>
using namespace std;
stack<double> sta;
string strr;
int main()
{
//freopen("ztest.txt","r",stdin);
while(getline(cin, strr))
{
int num[300000];
int j = 0;
while(!sta.empty())
sta.pop();
if(strr[0] == '0' && strr.size() == 1)
break;
int i = 0;
string str = "";
for(i = 0; i < strr.size(); i++)
{
if(strr[i] != ' ')
str = str + strr[i];
}
for(i = 0; i < str.size(); i++)
{
if(str[i] == '+')
num[j++] = -1;
if(str[i] == '-')
num[j++] = -2;
if(str[i] == '*')
num[j++] = -3;
if(str[i] == '/')
num[j++] = -4;
if(str[i] >= '0' && str[i] <= '9')
{
int sum = 0;
int jie = 1;
while(str[i] >= '0' && str[i] <= '9')
{
sum = sum * jie + str[i] - '0';
i++;
jie = jie * 10;
}
num[j++] = sum;
i--;
}
}
num[j] = -10;
i = 0;
sta.push(num[i++]);
while(1)
{
if(num[i] == -10)
break;
if(num[i] == -1)
{
i++;
sta.push(double(num[i++]));
continue;
}
if(num[i] == -2)
{
i++;
sta.push(double(-num[i++]));
continue;
}
if(num[i] == -3)
{
double temp = sta.top();
sta.pop();
i++;
temp = temp * (double(num[i]));
i++;
sta.push(temp);
continue;
}
if(num[i] == -4)
{
double temp = sta.top();
sta.pop();
i++;
temp = temp / (double(num[i]));
i++;
sta.push(temp);
continue;
}
}
double sum = 0;
while(!sta.empty())
{
double temp = sta.top();
sta.pop();
sum += temp;
}
printf("%.2lf\n",sum);
}
return 0;
}
hdu 1237 简便计算器 (栈的应用)
最新推荐文章于 2021-07-30 10:10:32 发布