#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)
{
double data;
double cal1, cal2;
int resp;
reset();
while (1) {
if (resp == 9) {
break;
}
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:
push(data);
break;
}
}
answer();
return 0;
}
void push(double value)
{
if (isFull()) {
} else {
stack[sp++] = value;
}
}
double 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("answer:%lf\n", stack
[0]); }
void reset(void)
{
while (!isEmpty()) {
pop();
}
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgMTAKCmRvdWJsZSBzdGFja1tTSVpFXTsKaW50IHNwOwoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSk7CmRvdWJsZSBwb3Aodm9pZCk7CmludCBpc0Z1bGwodm9pZCk7CmludCBpc0VtcHR5KHZvaWQpOwp2b2lkIGFuc3dlcih2b2lkKTsKdm9pZCByZXNldCh2b2lkKTsKCmludCBtYWluKHZvaWQpCnsKICAgIGRvdWJsZSBkYXRhOwogICAgZG91YmxlIGNhbDEsIGNhbDI7CiAgICBpbnQgcmVzcDsKCiAgICByZXNldCgpOwoKICAgIHdoaWxlICgxKSB7CiAgICAgICAgc2NhbmYoIiVkIiwgJnJlc3ApOwogICAgICAgIGlmIChyZXNwID09IDkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKHJlc3ApIHsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgY2FsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChjYWwyICsgY2FsMSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgMjoKICAgICAgICAgICAgICAgIGNhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGNhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goY2FsMiAtIGNhbDEpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICBjYWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICBjYWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGNhbDIgKiBjYWwxKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgY2FsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChjYWwyIC8gY2FsMSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHByaW50ZigiZGF0YToiKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlbGYiLCAmZGF0YSk7CiAgICAgICAgICAgICAgICBwdXNoKGRhdGEpOwogICAgICAgICAgICAgICAgcHJpbnRmKCIlbGZcbiIsIGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQoKICAgIGFuc3dlcigpOwogICAgcmV0dXJuIDA7Cn0KCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpCnsKICAgIGlmIChpc0Z1bGwoKSkgewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM5rqA5p2v44Gn5YWl44KK44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgIH0gZWxzZSB7CiAgICAgICAgc3RhY2tbc3ArK10gPSB2YWx1ZTsKICAgIH0KfQoKZG91YmxlIHBvcCh2b2lkKQp7CiAgICBpZiAoaXNFbXB0eSgpKSB7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYznqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgICAgIHJldHVybiAwOwogICAgfSBlbHNlIHsKICAgICAgICByZXR1cm4gc3RhY2tbLS1zcF07CiAgICB9Cn0KCmludCBpc0Z1bGwodm9pZCkKewogICAgaWYgKHNwID49IFNJWkUpIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCmludCBpc0VtcHR5KHZvaWQpCnsKICAgIGlmIChzcCA8PSAwKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9Cgp2b2lkIGFuc3dlcih2b2lkKQp7CiAgICBwcmludGYoIlxuIik7CiAgICBwcmludGYoImFuc3dlcjolbGZcbiIsIHN0YWNrWzBdKTsKfQoKdm9pZCByZXNldCh2b2lkKQp7CiAgICB3aGlsZSAoIWlzRW1wdHkoKSkgewogICAgICAgIHBvcCgpOwogICAgfQp9