#include <stdio.h>
#define SIZE 5
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)
{
sp = 0;
while(1){
int resp;
double data;
printf("1:+ 2:- 3:× 4:÷ 5:データ入力 9:計算結果 0:終了\n");
if(!resp) break;
switch(resp){
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();
push(a / b);
break;
}
case 5:
push(data);
break;
case 9:
answer();
break;
case 0:
reset();
break;
default:
}
}
return 0;
}
void push(double value)
{
if(!isFull()){
stack[sp] = value;
sp++;
}
}
double pop(void)
{
if(!isEmpty()){
sp--;
return stack[sp];
}
return 0;
}
int isFull(void)
{
return sp >= SIZE;
}
int isEmpty(void)
{
return sp <= 0;
}
void answer(void)
{
if(sp == 1){
printf("答え = %lf\n", stack
[0]); }
else{
}
}
void reset(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgNQoKZG91YmxlIHN0YWNrW1NJWkVdOwppbnQgc3A7Cgp2b2lkIHB1c2goZG91YmxlIHZhbHVlKTsKZG91YmxlIHBvcCh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgYW5zd2VyKHZvaWQpOwp2b2lkIHJlc2V0KHZvaWQpOwoKaW50IG1haW4odm9pZCkKewogICAgc3AgPSAwOwoKICAgIHdoaWxlKDEpewogICAgICAgIGludCByZXNwOwogICAgICAgIGRvdWJsZSBkYXRhOwoKICAgICAgICBwcmludGYoIjE6KyAyOi0gMzrDlyA0OsO3IDU644OH44O844K/5YWl5YqbIDk66KiI566X57WQ5p6cIDA657WC5LqGXG4iKTsKICAgICAgICBzY2FuZigiJWQiLCZyZXNwKTsKICAgICAgICAKICAgICAgICBpZighcmVzcCkgYnJlYWs7CiAgICAgICAgCiAgICAgICAgc3dpdGNoKHJlc3ApewogICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYSA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChhICsgYik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBkb3VibGUgYiA9IHBvcCgpOwogICAgICAgICAgICAgICAgZG91YmxlIGEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goYSAtIGIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZG91YmxlIGIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGRvdWJsZSBhID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGEgKiBiKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjYXNlIDQ6CiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRvdWJsZSBiID0gcG9wKCk7CiAgICAgICAgICAgICAgICBkb3VibGUgYSA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChhIC8gYik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgcHJpbnRmKCLjg4fjg7zjgr/lhaXlips6XG4iKTsKICAgICAgICAgICAgICAgIHNjYW5mKCIlbGYiLCZkYXRhKTsKICAgICAgICAgICAgICAgIHB1c2goZGF0YSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgOToKICAgICAgICAgICAgICAgIGFuc3dlcigpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCLlhaXlipvjgYzplpPpgZXjgaPjgabjgYTjgb7jgZlcbiIpOwogICAgICAgIH0KICAgIHByaW50ZigiXG4iKTsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSkKewogICAgaWYoIWlzRnVsbCgpKXsKICAgICAgICBzdGFja1tzcF0gPSB2YWx1ZTsKICAgICAgICBzcCsrOwogICAgfQp9Cgpkb3VibGUgcG9wKHZvaWQpCnsKICAgIGlmKCFpc0VtcHR5KCkpewogICAgICAgIHNwLS07CiAgICAgICAgcmV0dXJuIHN0YWNrW3NwXTsKICAgIH0KICAgIHJldHVybiAwOwp9CgppbnQgaXNGdWxsKHZvaWQpCnsKICAgIHJldHVybiBzcCA+PSBTSVpFOwp9CgppbnQgaXNFbXB0eSh2b2lkKQp7CiAgICByZXR1cm4gc3AgPD0gMDsKfQoKdm9pZCBhbnN3ZXIodm9pZCkKewogICAgaWYoc3AgPT0gMSl7CiAgICAgICAgcHJpbnRmKCLnrZTjgYggPSAlbGZcbiIsIHN0YWNrWzBdKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcHJpbnRmKCLoqIjnrpfntZDmnpzjgpLooajnpLrjgafjgY3jgb7jgZvjgpNcbiIpOwogICAgfQp9Cgp2b2lkIHJlc2V0KHZvaWQpCnsKICAgIHNwID0gMDsKfQ==