#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();
int resp,date;
while (1) {
printf("1:+ 2:- 3:* 4:/ 5:push 9:answer\n");
if(resp==9){
break;
}else{
switch(resp){
case 1:
push(pop()+pop());
break;
case 2:
push(pop()-pop());
break;
case 3:
push(pop()*pop());
break;
case 4:
push(pop()/pop());
break;
case 5:
push(date);
break;
}
}
}
answer();
return 0;
}
void push(double value) {
if(isFull()!=0){
stack[sp++]=value;
}
}
double pop(void){
if(isEmpty()!=0){
return stack[--sp];
}
else return 1;
}
int isFull(void){
if(sp>=SIZE){
return 0;
}
else return 1;
}
int isEmpty(void){
if(sp<=0){
printf("スタックが空で取り出せませんでした。\n"); return 0;
}
else return 1;
}
void answer(void){
printf("計算結果は%fです。\n",stack
[0]); }
void reset(void){
sp=0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgMTAKZG91YmxlIHN0YWNrW1NJWkVdOwppbnQgc3A7Cgp2b2lkIHB1c2goZG91YmxlIHZhbHVlKTsKZG91YmxlIHBvcCh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgYW5zd2VyKHZvaWQpOwp2b2lkIHJlc2V0KHZvaWQpOwoKaW50IG1haW4odm9pZCl7CiAgICByZXNldCgpOwogICAgaW50IHJlc3AsZGF0ZTsKCiAgICB3aGlsZSAoMSkgewogICAgICAgIHByaW50ZigiMTorIDI6LSAzOiogNDovIDU6cHVzaCA5OmFuc3dlclxuIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJnJlc3ApOwoKICAgICAgICBpZihyZXNwPT05KXsKICAgICAgICAJYnJlYWs7CiAgICAgICAgfWVsc2V7CiAgICAgICAgCXN3aXRjaChyZXNwKXsKICAgICAgICAgICAgCWNhc2UgMToKICAgICAgICAgICAgCXB1c2gocG9wKCkrcG9wKCkpOwogICAgICAgICAgICAJYnJlYWs7CiAgICAgICAgICAgIAljYXNlIDI6CiAgICAgICAgICAgIAlwdXNoKHBvcCgpLXBvcCgpKTsKICAgICAgICAgICAgCWJyZWFrOwogICAgICAgICAgICAJY2FzZSAzOgogICAgICAgICAgICAJcHVzaChwb3AoKSpwb3AoKSk7CiAgICAgICAgICAgIAlicmVhazsKICAgICAgICAgICAgCWNhc2UgNDoKICAgICAgICAgICAgCXB1c2gocG9wKCkvcG9wKCkpOwogICAgICAgICAgICAJYnJlYWs7CiAgICAgICAgICAgIAljYXNlIDU6CiAgICAgICAgICAgIAlwcmludGYoInB1c2g6XG4iKTsKICAgICAgICAgICAgCXNjYW5mKCIlZCIsJmRhdGUpOwogICAgICAgICAgICAJcHVzaChkYXRlKTsKICAgICAgICAgICAgCWJyZWFrOwogICAgICAgIAl9CiAgICAgICAgfQogICAgfQogICAgYW5zd2VyKCk7CiAgICByZXR1cm4gMDsKfQoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSkgewogICBpZihpc0Z1bGwoKSE9MCl7CgkJc3RhY2tbc3ArK109dmFsdWU7CiAgIH0KfQoKZG91YmxlIHBvcCh2b2lkKXsKCWlmKGlzRW1wdHkoKSE9MCl7CgkJcmV0dXJuIHN0YWNrWy0tc3BdOwoJfQoJZWxzZSByZXR1cm4gMTsKfQoKaW50IGlzRnVsbCh2b2lkKXsKCWlmKHNwPj1TSVpFKXsKCQlwcmludGYoIuOCueOCv+ODg+OCr+OBjOa6gOadr+OBp+WFpeOCiuOBvuOBm+OCk+OBp+OBl+OBn1xuIik7CgkJcmV0dXJuIDA7Cgl9CiAgICBlbHNlIHJldHVybiAxOwp9CgppbnQgaXNFbXB0eSh2b2lkKXsKCWlmKHNwPD0wKXsKCQlwcmludGYoIuOCueOCv+ODg+OCr+OBjOepuuOBp+WPluOCiuWHuuOBm+OBvuOBm+OCk+OBp+OBl+OBn+OAglxuIik7CgkJcmV0dXJuIDA7Cgl9CgllbHNlIHJldHVybiAxOwp9Cgp2b2lkIGFuc3dlcih2b2lkKXsKICAgIHByaW50Zigi6KiI566X57WQ5p6c44GvJWbjgafjgZnjgIJcbiIsc3RhY2tbMF0pOwp9Cgp2b2lkIHJlc2V0KHZvaWQpewogICAgc3A9MDsKfQ==