#include <stdio.h>
#include <stack>
#include <string.h>
using namespace std;
int main ()
{
stack <char>s1;
stack <double>s2;
char a [210],c,ch;
int i;
double b,d,m;
while (gets(a)&&strcmp(a,"0"))
{
for(i=0;a[i]; i++)
{
if(a[i]>='0'&&a[i]<='9')
{
b=0;
while (a[i]>='0'&&a[i]<='9')
{
b=b*10+a[i]-'0';
i++;
}
i--;
s2.push(b);
}
else if (a[i]=='+'||a[i]=='-')
{
if (!s1.empty())
{
c=s1.top();
s1.pop();
b=s2.top();
s2.pop();
d=s2.top();
s2.pop();
if(c=='+')
m=b+d;
else
m=d-b;
s2.push(m);
s1.push(a[i]);
}
else
s1.push(a[i]);
}
else if(a[i]=='/'||a[i]=='*')
{
ch=a[i];
i+=2;b=0;
while (a[i]>='0'&&a[i]<='9')
{
b=b*10+a[i]-'0';
i++;
}
i--;
d=s2.top();
s2.pop();
if(ch=='*')
m=d*b;
else
m=d/b;
s2.push(m);
}
}
while (!s1.empty())
{
c=s1.top();
s1.pop();
b=s2.top();
s2.pop();
d=s2.top();
s2.pop();
if(c=='+')
m=b+d;
else
m=d-b;
s2.push(m);
}
printf("%.2lf\n",s2.top());
}
return 0;
}
hdu 1237简单计算器
最新推荐文章于 2023-09-22 17:09:58 发布