-
题目描述:
-
对于一个不存在括号的表达式进行计算
-
输入:
-
存在多种数据,每组数据一行,表达式不存在空格
-
输出:
-
输出结果
-
样例输入:
-
6/2+3+3*4
-
样例输出:
-
18
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
#include<stack>
#include<algorithm>
#include<cmath>
using namespace std;
int main(){
char s[1000];
while(cin>>s){
stack<double> num;
for(int i=0;i<strlen(s);){
double q=0;
if(s[i]>='0'&&s[i]<='9'){
for(;i<strlen(s)&&(s[i]>='0'&&s[i]<='9');i++){
q=q*10+s[i]-'0';
}
num.push(q);
}
q=0;
if(s[i]=='+') {
for(i++;i<strlen(s)&&(s[i]>='0'&&s[i]<='9');i++)
q=q*10+s[i]-'0';
num.push(q);
}
else if(s[i]=='-') {
for(i++;i<strlen(s)&&(s[i]>='0'&&s[i]<='9');i++)
q=q*10+s[i]-'0';
num.push(-1*q);
}
else if(s[i]=='*'||s[i]=='/'){
double n=num.top();
num.pop();
double sum=0;
if(s[i]=='*'){
q=0;
for(i++;i<strlen(s)&&(s[i]>='0'&&s[i]<='9');i++)
q=q*10+s[i]-'0';
sum=n*(q);
}else{
q=0;
for(i++;i<strlen(s)&&(s[i]>='0'&&s[i]<='9');i++)
q=q*10+s[i]-'0';
sum=1.0*n/(q);
}
num.push(sum);
i++;
}
}
double d=0;
while(num.size()){
d+=num.top();
num.pop();
}
cout<<d<<endl;
}
return 0;
}