#include <stdio.h>

#define SIZE 10
double stack[SIZE];
int sp;

void push(double value);
double pop(void);
int isFull(void);
int isEmpty(void);
void answer(void);
void reset(void);

int main(void)
{
    reset();
    while(1){
        int mode;
        double data, a, b;

        scanf("%d", &mode);

        if (mode == 9) {
            break;
        }

        switch (mode) {
            case 1: // 足し算 (+)
                b = pop();
                a = pop();
                push(a + b);
                break;
            case 2: // 引き算 (-)
                b = pop();
                a = pop();
                push(a - b);
                break;
            case 3: // 掛け算 (*)
                b = pop();
                a = pop();
                push(a * b);
                break;
            case 4: // 割り算 (/)
                b = pop();
                a = pop();
                push(a / b);
                break;
            case 5: // データ入力
                scanf("%lf", &data);
                printf("data:%f\n", data);
                push(data);
                break;
            default:
                break;
        }
    }
    answer();
    return 0;
}

/* (2) push関数: データをスタックに格納する */
void push(double value)
{
    if (!isFull()) {
        stack[sp] = value;
        sp++;
    }
}

/* (3) pop関数: データをスタックから取り出す */
double pop(void)
{
    if (!isEmpty()) {
        sp--;
        return stack[sp];
    }
    return 0.0;
}

/* (4) isFull関数: スタックが満杯かどうか判定 */
int isFull(void)
{
    if (sp >= SIZE) {
        return 1;
    } else {
        return 0;
    }
}

/* (5) isEmpty関数: スタックが空かどうか判定 */
int isEmpty(void)
{
    if (sp <= 0) {
        return 1;
    } else {
        return 0;
    }
}

/* (6) answer関数: 計算結果を表示する */
void answer(void)
{
    printf("answer:%f\n", pop());
}

/* (7) reset関数: スタックを空にする */
void reset(void)
{
    sp = 0;
}

