#include <stdio.h>

#define SIZE 5

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)
{
    sp = 0;

    while(1){
        int resp;
        double data;

        printf("1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了\n");
        scanf("%d",&resp);
        
        if(!resp) break;
        
        switch(resp){
            case 1:
            {
                double b = pop();
                double a = pop();
                push(a + b);
                break;
            }

            case 2:
            {
                double b = pop();
                double a = pop();
                push(a - b);
                break;
            }

            case 3:
            {
                double b = pop();
                double a = pop();
                push(a * b);
                break;
            }

            case 4:
            {
                double b = pop();
                double a = pop();
                push(a / b);
                break;
            }

            case 5:
                printf("データ入力:\n");
                scanf("%lf",&data);
                push(data);
                break;

            case 9:
                answer();
                break;

            case 0:
                reset();
                break;

            default:
                printf("入力が間違っています\n");
        }
    printf("\n");
    }

    return 0;
}

void push(double value)
{
    if(!isFull()){
        stack[sp] = value;
        sp++;
    }
}

double pop(void)
{
    if(!isEmpty()){
        sp--;
        return stack[sp];
    }
    return 0;
}

int isFull(void)
{
    return sp >= SIZE;
}

int isEmpty(void)
{
    return sp <= 0;
}

void answer(void)
{
    if(sp == 1){
        printf("答え = %lf\n", stack[0]);
    }
    else{
        printf("計算結果を表示できません\n");
    }
}

void reset(void)
{
    sp = 0;
}