#include<iostream>
#include<stack>
#include<vector>
#include<stdlib.h>
using namespace std;

int to_int(string s){
    int ans = 0;
    string::iterator it = s.begin();
    while(it!=s.end()){
        ans*=10;
        ans += *it-'0';
        it++;
    }
    return ans;
}
bool opGreater(char a,char b){//a>b
    if(a=='+'||a=='-') return false;
    if(b=='+'||b=='-') return true;
    return false;
}
bool isSameLevel(char a,char b){
    if(a=='+'||a=='-'){
        if(b=='+'||b=='-') return true;
    } else if(b=='*'||b=='/'){
        return true;
    }
    return false;
}
float cal(float a,float b,char o){
    switch(o){
        case '+':
            return a+b;
        case '-':
            return a-b;
        case '*':
            return a*b;
        case '/':
            return a/b;
    }
    return 0;
}
void cal(stack<float> &operand,stack<char> &op){
    float right = operand.top();
    operand.pop();
    float left = operand.top();
    operand.pop();
    char o = op.top();
    op.pop();
    float ans = cal(left,right,o);
    operand.push(ans);
}
void Question5_2(){//习题5.2  上海交大  计算无括号的中缀表达式
    string expression;
    while(cin>>expression){
        //初始化表达式序列
        vector<string> seq;
        int j = 0;
        int len = expression.size();
        for(int i=0;i<len;i++){
            if(expression[i]=='+'||expression[i]=='-'||expression[i]=='*'||expression[i]=='/'){
                //取操作数
                string num = expression.substr(j,i-j);
                seq.push_back(num);
                //取操作符
                string op = expression.substr(i,1);
                seq.push_back(op);
                j = i+1;
            }
        }
        seq.push_back(expression.substr(j));//取最后一个操作数
        
        //遍历表达式序列
        stack<float> operand;
        stack<char> op;
        vector<string>::iterator it = seq.begin();
        while(it!=seq.end()){
            if(*it=="+"||*it=="-"||*it=="*"||*it=="/"){//存入操作符栈
                if(op.size()==0||opGreater((*it)[0],op.top())){
                             //优先级升高,如1+2*3,暂时不算*
                    op.push((*it)[0]);
                } else if(isSameLevel((*it)[0],op.top())){
                              //优先级不变,如1+2*3*4,算2*3
                    cal(operand,op);
                    op.push((*it)[0]);
                } else {//优先级降低,如1+2*3*45,算6*4
                    while(!op.empty()){
                        cal(operand,op);
                    }
                    op.push((*it)[0]);
                }
            } else {//操作数,转化成数字形式后压入操作数栈
                operand.push((float)to_int(*it));
            }
            it++;
        }
        while(!op.empty()){
            cal(operand,op);
        }
        cout<<operand.top()<<endl;
    }
    
}
int main(){
    Question5_2();
}