#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 mode;
double data, a, b;
if (mode == 9) {
break;
}
switch (mode) {
case 1: // 足し算 (+)
b = pop();
a = pop();
push(a + b);
break;
case 2: // 引き算 (-)
b = pop();
a = pop();
push(a - b);
break;
case 3: // 掛け算 (*)
b = pop();
a = pop();
push(a * b);
break;
case 4: // 割り算 (/)
b = pop();
a = pop();
push(a / b);
break;
case 5: // データ入力
push(data);
break;
default:
break;
}
}
answer();
return 0;
}
/* (2) push関数: データをスタックに格納する */
void push(double value)
{
if (!isFull()) {
stack[sp] = value;
sp++;
}
}
/* (3) pop関数: データをスタックから取り出す */
double pop(void)
{
if (!isEmpty()) {
sp--;
return stack[sp];
}
return 0.0;
}
/* (4) isFull関数: スタックが満杯かどうか判定 */
int isFull(void)
{
if (sp >= SIZE) {
return 1;
} else {
return 0;
}
}
/* (5) isEmpty関数: スタックが空かどうか判定 */
int isEmpty(void)
{
if (sp <= 0) {
return 1;
} else {
return 0;
}
}
/* (6) answer関数: 計算結果を表示する */
void answer(void)
{
}
/* (7) reset関数: スタックを空にする */
void reset(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgMTAKZG91YmxlIHN0YWNrW1NJWkVdOwppbnQgc3A7Cgp2b2lkIHB1c2goZG91YmxlIHZhbHVlKTsKZG91YmxlIHBvcCh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgYW5zd2VyKHZvaWQpOwp2b2lkIHJlc2V0KHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogICAgcmVzZXQoKTsKICAgIHdoaWxlKDEpewogICAgICAgIGludCBtb2RlOwogICAgICAgIGRvdWJsZSBkYXRhLCBhLCBiOwoKICAgICAgICBzY2FuZigiJWQiLCAmbW9kZSk7CgogICAgICAgIGlmIChtb2RlID09IDkpIHsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKICAgICAgICAgICAgY2FzZSAxOiAvLyDotrPjgZfnrpcgKCspCiAgICAgICAgICAgICAgICBiID0gcG9wKCk7CiAgICAgICAgICAgICAgICBhID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGEgKyBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6IC8vIOW8leOBjeeulyAoLSkKICAgICAgICAgICAgICAgIGIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYSAtIGIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzogLy8g5o6b44GR566XICgqKQogICAgICAgICAgICAgICAgYiA9IHBvcCgpOwogICAgICAgICAgICAgICAgYSA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChhICogYik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OiAvLyDlibLjgornrpcgKC8pCiAgICAgICAgICAgICAgICBiID0gcG9wKCk7CiAgICAgICAgICAgICAgICBhID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGEgLyBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDU6IC8vIOODh+ODvOOCv+WFpeWKmwogICAgICAgICAgICAgICAgc2NhbmYoIiVsZiIsICZkYXRhKTsKICAgICAgICAgICAgICAgIHByaW50ZigiZGF0YTolZlxuIiwgZGF0YSk7CiAgICAgICAgICAgICAgICBwdXNoKGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CiAgICBhbnN3ZXIoKTsKICAgIHJldHVybiAwOwp9CgovKiAoMikgcHVzaOmWouaVsDog44OH44O844K/44KS44K544K/44OD44Kv44Gr5qC857SN44GZ44KLICovCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpCnsKICAgIGlmICghaXNGdWxsKCkpIHsKICAgICAgICBzdGFja1tzcF0gPSB2YWx1ZTsKICAgICAgICBzcCsrOwogICAgfQp9CgovKiAoMykgcG9w6Zai5pWwOiDjg4fjg7zjgr/jgpLjgrnjgr/jg4Pjgq/jgYvjgonlj5bjgorlh7rjgZkgKi8KZG91YmxlIHBvcCh2b2lkKQp7CiAgICBpZiAoIWlzRW1wdHkoKSkgewogICAgICAgIHNwLS07CiAgICAgICAgcmV0dXJuIHN0YWNrW3NwXTsKICAgIH0KICAgIHJldHVybiAwLjA7Cn0KCi8qICg0KSBpc0Z1bGzplqLmlbA6IOOCueOCv+ODg+OCr+OBjOa6gOadr+OBi+OBqeOBhuOBi+WIpOWumiAqLwppbnQgaXNGdWxsKHZvaWQpCnsKICAgIGlmIChzcCA+PSBTSVpFKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgovKiAoNSkgaXNFbXB0eemWouaVsDog44K544K/44OD44Kv44GM56m644GL44Gp44GG44GL5Yik5a6aICovCmludCBpc0VtcHR5KHZvaWQpCnsKICAgIGlmIChzcCA8PSAwKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgovKiAoNikgYW5zd2Vy6Zai5pWwOiDoqIjnrpfntZDmnpzjgpLooajnpLrjgZnjgosgKi8Kdm9pZCBhbnN3ZXIodm9pZCkKewogICAgcHJpbnRmKCJhbnN3ZXI6JWZcbiIsIHBvcCgpKTsKfQoKLyogKDcpIHJlc2V06Zai5pWwOiDjgrnjgr/jg4Pjgq/jgpLnqbrjgavjgZnjgosgKi8Kdm9pZCByZXNldCh2b2lkKQp7CiAgICBzcCA9IDA7Cn0KCg==