#include <stdio.h>

#define SIZE 10

int stack[SIZE];
int sp;

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

int main(void)
{
    reset();

    while(1){

        int resp;
        int data;

        printf("1:+ 2:- 3:* 4:/ 5:入力 9:表示 0:終了\n");
        scanf("%d", &resp);
        
        if(resp == 9){
        	break;
        }

        switch(resp){

            case 1:
                push(pop() + pop());
                break;

            case 2:
            {
                int x;
                int y;

                x = pop();   
                y = pop();

                push(y - x);
                break;
            }

            case 3:
                push(pop() * pop());
                break;

            case 4:
            {
                int x;
                int y;

                x = pop();
                y = pop();

                push(y / x);
                break;
            }

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

            

            case 0:
                return 0;
        }

    }

    answer();

    return 0;
}

void push(int value)
{
    if(isFull()){
        printf("スタックが満杯で入りませんでした\n");
    }
    else{
        stack[sp++] = value;
    }
}

int pop(void)
{
    if(isEmpty()){
        printf("スタックが空で取り出せませんでした\n");
        return 0;
    }
    else{
        return stack[--sp];
    }
}

int isFull(void)
{
    if(sp >= SIZE){
        return 1;
    }
    else{
        return 0;
    }
}

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

void answer(void)
{
    printf("計算結果 = %d\n", (int)stack[sp - 1]);
}

void reset(void)
{
    sp = 0;
}