#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)
{
    int resp;
    double cal1,cal2, date;
    reset(); 
    while(1){
    printf("1:+ 2:- 3:* 4:/ 5:データ入力 9:結果表示\n");
    scanf("%d", &resp); 
    switch(resp){
    case 1:
    cal1 = pop();
    cal2 = pop();
    push(cal2+cal1);
    break;
 
    case 2:
    cal1 = pop();
    cal2 = pop();
    push(cal2-cal1);
    break;
 
    case 3:
    cal1 = pop();
    cal2 = pop();
    push(cal2*cal1);
    break;
 
    case 4:
    cal1 = pop();
    cal2 = pop();
    push(cal2/cal1);
    break;
 
    case 5:
    printf("データ=");
    scanf("%lf", &date);
    push(date);
    break;
 
    case 9:
    answer();
    return 0;
    }
    }
    
    answer();
 
    return 0;
}
 
void push(double value)
{
    if(isFull()){
    printf("スタックが満杯です\n");
    return;
    }
 
    stack[sp] = value;
    sp++;
}
 
double pop(void)
{
    if(isEmpty()){
    printf("スタックが空です\n");
    return 0;
    }
 
    sp--;
    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)
{
    if(isEmpty()){
    printf("データがありません\n");
    }else{
    printf("計算結果 = %.2f\n", stack[sp-1]);
    }
}
 
void reset(void)
{
    sp = 0;
}
