#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)
{
int resp;
double data, cal1, cal2;
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();
if(cal1 == 0){
push(cal2);
push(cal1);
}
else{
push(cal2 / cal1);
}
break;
case 5:
push(data);
break;
case 9:
reset();
break;
default:
}
}
answer();
return 0;
}
void push(double value)
{
if(isFull()){
}
else{
stack[sp++] = value;
}
}
double pop(void)
{
if(isEmpty()){
printf("スタックが空で取り出せませんでした\n"); return 0.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)
{
if(sp > 0){
printf("data: = %.6f", stack
[sp
- 1]); }
else{
}
}
void reset(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgMTAKCmRvdWJsZSBzdGFja1tTSVpFXTsKaW50IHNwOwoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSk7CmRvdWJsZSBwb3Aodm9pZCk7CmludCBpc0Z1bGwodm9pZCk7CmludCBpc0VtcHR5KHZvaWQpOwp2b2lkIGFuc3dlcih2b2lkKTsKdm9pZCByZXNldCh2b2lkKTsKCmludCBtYWluKHZvaWQpCnsKICAgIGludCByZXNwOwogICAgZG91YmxlIGRhdGEsIGNhbDEsIGNhbDI7CgogICAgcmVzZXQoKTsKCiAgICB3aGlsZSgxKXsKCiAgICAgICAKICAgICAgICBzY2FuZigiJWQiLCAmcmVzcCk7CgogICAgICAgaWYocmVzcD09OSl7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgIGJyZWFrOwp9CgogICAgICAgIHN3aXRjaChyZXNwKXsKCiAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgIGNhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGNhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goY2FsMiArIGNhbDEpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBjYWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICBjYWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGNhbDIgLSBjYWwxKTsKICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgY2FsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChjYWwyICogY2FsMSk7CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgNDoKICAgICAgICAgICAgICAgIGNhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGNhbDIgPSBwb3AoKTsKCiAgICAgICAgICAgICAgICBpZihjYWwxID09IDApewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiMOOBp+OBr+WJsuOCjOOBvuOBm+OCk1xuIik7CiAgICAgICAgICAgICAgICAgICAgcHVzaChjYWwyKTsKICAgICAgICAgICAgICAgICAgICBwdXNoKGNhbDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICBwdXNoKGNhbDIgLyBjYWwxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgcHJpbnRmKCJkYXRhIDogIik7CiAgICAgICAgICAgICAgICBzY2FuZigiJWxmIiwgJmRhdGEpOwogICAgICAgICAgICAgICAgcHVzaChkYXRhKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICBjYXNlIDk6CiAgICAgICAgICAgICAgICByZXNldCgpOwogICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgcHJpbnRmKCLlhaXlipvjgqjjg6njg7xcbiIpOwogICAgICAgIH0KCiAgICAgICAgcHJpbnRmKCJzcD0lZFxuIiwgc3ApOwogICAgfQoKICAgIGFuc3dlcigpOwoKICAgIHJldHVybiAwOwp9Cgp2b2lkIHB1c2goZG91YmxlIHZhbHVlKQp7CiAgICBpZihpc0Z1bGwoKSl7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYzmuoDmna/jgaflhaXjgorjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgfQogICAgZWxzZXsKICAgICAgICBzdGFja1tzcCsrXSA9IHZhbHVlOwogICAgfQp9Cgpkb3VibGUgcG9wKHZvaWQpCnsKICAgIGlmKGlzRW1wdHkoKSl7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYznqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgICAgIHJldHVybiAwLjA7CiAgICB9CiAgICBlbHNlewogICAgICAgIHJldHVybiBzdGFja1stLXNwXTsKICAgIH0KfQoKaW50IGlzRnVsbCh2b2lkKQp7CiAgICBpZihzcCA+PSBTSVpFKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KCmludCBpc0VtcHR5KHZvaWQpCnsKICAgIGlmKHNwIDw9IDApewogICAgICAgIHJldHVybiAxOwogICAgfQogICAgZWxzZXsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQoKdm9pZCBhbnN3ZXIodm9pZCkKewogICAgaWYoc3AgPiAwKXsKICAgICAgICBwcmludGYoImRhdGE6ID0gJS42ZiIsIHN0YWNrW3NwIC0gMV0pOwogICAgfQogICAgZWxzZXsKICAgICAgICBwcmludGYoIlxu44K544K/44OD44Kv44GM56m644Gn44GZXG4iKTsKICAgIH0KfQoKdm9pZCByZXNldCh2b2lkKQp7CiAgICBzcCA9IDA7Cn0=