#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();
while(1){
int c;
switch (c) {
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();
if (b==0) {
reset();
} else {
push(a/b);
}
break;
}
case 5: {
double x;
push(x);
break;
}
case 9: {
answer();
return 0;
}
}
}
return 0;
}
void push(double value)
{
if(isFull()){
printf("スタックが満杯で入りませんでした。\n"); }
else{
stack[sp++]=value;
}
}
double pop(void)
{
if(isEmpty()){
printf("スタックが空で取り出せませんでした\n"); return 0;
}
else{
return stack[--sp];
}
}
int isFull(void)
{
return sp >= SIZE;
}
int isEmpty(void)
{
return sp <= 0;
}
void answer(void)
{
if (sp == 1) {
printf("answer:%lf\n", stack
[0]); } else if (isEmpty()) {
} else {
printf("スタックに複数の値が残っています。\n"); }
}
void reset(void)
{
sp=0;
}
I2luY2x1ZGU8c3RkaW8uaD4KIAojZGVmaW5lIFNJWkUgMTAKZG91YmxlIHN0YWNrW1NJWkVdOwppbnQgc3A7CiAKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSk7CmRvdWJsZSBwb3Aodm9pZCk7CmludCBpc0Z1bGwodm9pZCk7CmludCBpc0VtcHR5KHZvaWQpOwp2b2lkIGFuc3dlcih2b2lkKTsKdm9pZCByZXNldCh2b2lkKTsKIAppbnQgbWFpbih2b2lkKQp7CiAgICByZXNldCgpOwogICAgd2hpbGUoMSl7CiAgICAgICAgaW50IGM7CiAgICAgICAgc2NhbmYoIiVkIiwmYyk7CiAgICAgICAgc3dpdGNoIChjKSB7CiAgICAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgICAgZG91YmxlIGI9cG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYT1wb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYStiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgMjogewogICAgICAgICAgICAgICAgZG91YmxlIGI9cG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYT1wb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYS1iKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgMzogewogICAgICAgICAgICAgICAgZG91YmxlIGI9cG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYT1wb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYSpiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNhc2UgNDogewogICAgICAgICAgICAgICAgZG91YmxlIGI9cG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYT1wb3AoKTsKICAgICAgICAgICAgICAgIGlmIChiPT0wKSB7CiAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIw44Gn5Ymy44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CCXG4iKTsKICAgICAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwdXNoKGEvYik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDU6IHsKICAgICAgICAgICAgICAgIGRvdWJsZSB4OwogICAgICAgICAgICAgICAgc2NhbmYoIiVsZiIsJngpOwogICAgICAgICAgICAgICAgcHJpbnRmKCJkYXRlOiVsZlxuIix4KTsKICAgICAgICAgICAgICAgIHB1c2goeCk7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlIDk6IHsKICAgICAgICAgICAgICAgIGFuc3dlcigpOwogICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMDsKfQogCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpCnsKICAgIGlmKGlzRnVsbCgpKXsKICAgICAgICBwcmludGYoIuOCueOCv+ODg+OCr+OBjOa6gOadr+OBp+WFpeOCiuOBvuOBm+OCk+OBp+OBl+OBn+OAglxuIik7CiAgICB9CiAgICBlbHNlewogICAgICAgIHN0YWNrW3NwKytdPXZhbHVlOwogICAgfQp9CiAKZG91YmxlIHBvcCh2b2lkKQp7CiAgICBpZihpc0VtcHR5KCkpewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM56m644Gn5Y+W44KK5Ye644Gb44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIHN0YWNrWy0tc3BdOwogICAgfQp9CiAKaW50IGlzRnVsbCh2b2lkKQp7CiAgICByZXR1cm4gc3AgPj0gU0laRTsKfQogCmludCBpc0VtcHR5KHZvaWQpCnsKICAgIHJldHVybiBzcCA8PSAwOwp9CiAKdm9pZCBhbnN3ZXIodm9pZCkKewogICAgaWYgKHNwID09IDEpIHsKICAgICAgICBwcmludGYoImFuc3dlcjolbGZcbiIsIHN0YWNrWzBdKTsKICAgIH0gZWxzZSBpZiAoaXNFbXB0eSgpKSB7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYznqbrjgafjgZnjgIJcbiIpOwogICAgfSBlbHNlIHsKICAgICAgICBwcmludGYoIuOCueOCv+ODg+OCr+OBq+ikh+aVsOOBruWApOOBjOaui+OBo+OBpuOBhOOBvuOBmeOAglxuIik7CiAgICB9Cn0KIAp2b2lkIHJlc2V0KHZvaWQpCnsKICAgIHNwPTA7Cn0=