#include <stdio.h>
#define SIZE 10
int stack[SIZE];
int sp;
void push(int value);
int pop(void);
int isFull(void);
int isEmpty(void);
void answer(void);
void reset(void);
int main(void)
{
reset();
while(1){
int resp;
int data;
printf("1:+ 2:- 3:* 4:/ 5:入力 9:表示 0:終了\n");
if(resp == 9){
break;
}
switch(resp){
case 1:
push(pop() + pop());
break;
case 2:
{
int x;
int y;
x = pop();
y = pop();
push(y - x);
break;
}
case 3:
push(pop() * pop());
break;
case 4:
{
int x;
int y;
x = pop();
y = pop();
push(y / x);
break;
}
case 5:
push(data);
break;
case 0:
return 0;
}
}
answer();
return 0;
}
void push(int value)
{
if(isFull()){
}
else{
stack[sp++] = value;
}
}
int 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("計算結果 = %d\n", (int)stack
[sp
- 1]); }
void reset(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgMTAKCmludCBzdGFja1tTSVpFXTsKaW50IHNwOwoKdm9pZCBwdXNoKGludCB2YWx1ZSk7CmludCBwb3Aodm9pZCk7CmludCBpc0Z1bGwodm9pZCk7CmludCBpc0VtcHR5KHZvaWQpOwp2b2lkIGFuc3dlcih2b2lkKTsKdm9pZCByZXNldCh2b2lkKTsKCmludCBtYWluKHZvaWQpCnsKICAgIHJlc2V0KCk7CgogICAgd2hpbGUoMSl7CgogICAgICAgIGludCByZXNwOwogICAgICAgIGludCBkYXRhOwoKICAgICAgICBwcmludGYoIjE6KyAyOi0gMzoqIDQ6LyA1OuWFpeWKmyA5OuihqOekuiAwOue1guS6hlxuIik7CiAgICAgICAgc2NhbmYoIiVkIiwgJnJlc3ApOwogICAgICAgIAogICAgICAgIGlmKHJlc3AgPT0gOSl7CiAgICAgICAgCWJyZWFrOwogICAgICAgIH0KCiAgICAgICAgc3dpdGNoKHJlc3ApewoKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgcHVzaChwb3AoKSArIHBvcCgpKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpbnQgeDsKICAgICAgICAgICAgICAgIGludCB5OwoKICAgICAgICAgICAgICAgIHggPSBwb3AoKTsgICAKICAgICAgICAgICAgICAgIHkgPSBwb3AoKTsKCiAgICAgICAgICAgICAgICBwdXNoKHkgLSB4KTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjYXNlIDM6CiAgICAgICAgICAgICAgICBwdXNoKHBvcCgpICogcG9wKCkpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGludCB4OwogICAgICAgICAgICAgICAgaW50IHk7CgogICAgICAgICAgICAgICAgeCA9IHBvcCgpOwogICAgICAgICAgICAgICAgeSA9IHBvcCgpOwoKICAgICAgICAgICAgICAgIHB1c2goeSAvIHgpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHByaW50Zigi44OH44O844K/5YWl5YqbOiIpOwogICAgICAgICAgICAgICAgc2NhbmYoIiVkIiwgJmRhdGEpOwogICAgICAgICAgICAgICAgcHVzaChkYXRhKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgCgogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICB9CgogICAgfQoKICAgIGFuc3dlcigpOwoKICAgIHJldHVybiAwOwp9Cgp2b2lkIHB1c2goaW50IHZhbHVlKQp7CiAgICBpZihpc0Z1bGwoKSl7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYzmuoDmna/jgaflhaXjgorjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgfQogICAgZWxzZXsKICAgICAgICBzdGFja1tzcCsrXSA9IHZhbHVlOwogICAgfQp9CgppbnQgcG9wKHZvaWQpCnsKICAgIGlmKGlzRW1wdHkoKSl7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYznqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgZWxzZXsKICAgICAgICByZXR1cm4gc3RhY2tbLS1zcF07CiAgICB9Cn0KCmludCBpc0Z1bGwodm9pZCkKewogICAgaWYoc3AgPj0gU0laRSl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CiAgICBlbHNlewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgppbnQgaXNFbXB0eSh2b2lkKQp7CiAgICBpZihzcCA8PSAwKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCnZvaWQgYW5zd2VyKHZvaWQpCnsKICAgIHByaW50Zigi6KiI566X57WQ5p6cID0gJWRcbiIsIChpbnQpc3RhY2tbc3AgLSAxXSk7Cn0KCnZvaWQgcmVzZXQodm9pZCkKewogICAgc3AgPSAwOwp9