#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 select;
double data;
reset();
printf("1:+ 2:- 3:* 4:/ 5:data 9:answer\n"); while(1){
switch(select){
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:
push(data);
break;
case 9:
answer();
return 0;
}
}
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)
{
if(sp >= SIZE){
return 1;
}
return 0;
}
int isEmpty(void)
{
if(sp <= 0){
return 1;
}
return 0;
}
void answer(void)
{
if(!isEmpty()){
printf("answer = %f\n", pop
()); }
}
void reset(void)
{
sp = 0;
}
I2luY2x1ZGU8c3RkaW8uaD4KCiNkZWZpbmUgU0laRSAxMAoKZG91YmxlIHN0YWNrW1NJWkVdOwppbnQgc3A7Cgp2b2lkIHB1c2goZG91YmxlIHZhbHVlKTsKZG91YmxlIHBvcCh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgYW5zd2VyKHZvaWQpOwp2b2lkIHJlc2V0KHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogICAgaW50IHNlbGVjdDsKICAgIGRvdWJsZSBkYXRhOwogICAgCiAgICByZXNldCgpOwogICAgcHJpbnRmKCIxOisgMjotIDM6KiA0Oi8gNTpkYXRhIDk6YW5zd2VyXG4iKTsKICAgIHdoaWxlKDEpewogICAgICAgIHNjYW5mKCIlZCIsICZzZWxlY3QpOwoKICAgICAgICBzd2l0Y2goc2VsZWN0KXsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkb3VibGUgYiA9IHBvcCgpOwogICAgICAgICAgICAgICAgZG91YmxlIGEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYSArIGIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZG91YmxlIGIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGRvdWJsZSBhID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGEgLSBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYSA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChhICogYik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkb3VibGUgYiA9IHBvcCgpOwogICAgICAgICAgICAgICAgZG91YmxlIGEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYSAvIGIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHNjYW5mKCIlbGYiLCAmZGF0YSk7CiAgICAgICAgICAgICAgICBwdXNoKGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICBhbnN3ZXIoKTsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMDsKfQoKCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpCnsKICAgIGlmKCFpc0Z1bGwoKSl7CiAgICAgICAgc3RhY2tbc3BdID0gdmFsdWU7CiAgICAgICAgc3ArKzsKICAgIH0KfQoKCmRvdWJsZSBwb3Aodm9pZCkKewogICAgaWYoIWlzRW1wdHkoKSl7CiAgICAgICAgc3AtLTsKICAgICAgICByZXR1cm4gc3RhY2tbc3BdOwogICAgfQoKICAgIHJldHVybiAwOwp9CgoKaW50IGlzRnVsbCh2b2lkKQp7CiAgICBpZihzcCA+PSBTSVpFKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIHJldHVybiAwOwp9CgoKaW50IGlzRW1wdHkodm9pZCkKewogICAgaWYoc3AgPD0gMCl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKCnZvaWQgYW5zd2VyKHZvaWQpCnsKICAgIGlmKCFpc0VtcHR5KCkpewogICAgICAgIHByaW50ZigiYW5zd2VyID0gJWZcbiIsIHBvcCgpKTsKICAgIH0KfQoKCnZvaWQgcmVzZXQodm9pZCkKewogICAgc3AgPSAwOwp9