#include <stdio.h>
#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)
{
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;
default:
}
//printf("sp=%d\n",sp);
}
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("\n計算結果 = %.6f\n", stack
[sp
-1]); }
else{
}
}
void reset(void)
{
sp = 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojaW5jbHVkZSA8c3RkaW8uaD4KIAojZGVmaW5lIFNJWkUgNQogCmRvdWJsZSBzdGFja1tTSVpFXTsKaW50IHNwOwogCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpOwpkb3VibGUgcG9wKHZvaWQpOwppbnQgaXNGdWxsKHZvaWQpOwppbnQgaXNFbXB0eSh2b2lkKTsKdm9pZCBhbnN3ZXIodm9pZCk7CnZvaWQgcmVzZXQodm9pZCk7CiAKaW50IG1haW4odm9pZCkKewogICAgaW50IHJlc3A7CiAgICBkb3VibGUgZGF0YSwgY2FsMSwgY2FsMjsKIAogICAgcmVzZXQoKTsKIAogICAgd2hpbGUoMSl7CiAKIAogICAgICAgIHNjYW5mKCIlZCIsICZyZXNwKTsKIAogICAgICAgIGlmKHJlc3AgPT0gOSkKICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICBzd2l0Y2gocmVzcCl7CiAKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgY2FsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaChjYWwyICsgY2FsMSk7CiAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgICAgICBjYWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICBjYWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKGNhbDIgLSBjYWwxKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgIGNhc2UgMzoKICAgICAgICAgICAgICAgIGNhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIGNhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2goY2FsMiAqIGNhbDEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgY2FsMiA9IHBvcCgpOwogCiAgICAgICAgICAgICAgICBpZihjYWwxID09IDApewogICAgICAgICAgICAgICAgICAgIHByaW50ZigiMOOBp+OBr+WJsuOCjOOBvuOBm+OCk1xuIik7CiAgICAgICAgICAgICAgICAgICAgcHVzaChjYWwyKTsKICAgICAgICAgICAgICAgICAgICBwdXNoKGNhbDEpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgICAgICBwdXNoKGNhbDIgLyBjYWwxKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgIGNhc2UgNToKICAgICAgICAgICAgICAgIHByaW50ZigiZGF0YSA6ICIpOwogICAgICAgICAgICAgICAgc2NhbmYoIiVsZiIsICZkYXRhKTsKICAgICAgICAgICAgICAgIHByaW50ZigiJWxmXG4iLGRhdGEpOwogICAgICAgICAgICAgICAgcHVzaChkYXRhKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBwcmludGYoIuWFpeWKm+OCqOODqeODvFxuIik7CiAgICAgICAgfQogCiAgICAgICAgLy9wcmludGYoInNwPSVkXG4iLHNwKTsKICAgIH0KIAogICAgYW5zd2VyKCk7CiAKICAgIHJldHVybiAwOwp9CiAKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSkKewogICAgaWYoaXNGdWxsKCkpewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM5rqA5p2v44Gn5YWl44KK44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgc3RhY2tbc3ArK10gPSB2YWx1ZTsKICAgIH0KfQogCmRvdWJsZSBwb3Aodm9pZCkKewogICAgaWYoaXNFbXB0eSgpKXsKICAgICAgICBwcmludGYoIuOCueOCv+ODg+OCr+OBjOepuuOBp+WPluOCiuWHuuOBm+OBvuOBm+OCk+OBp+OBl+OBn1xuIik7CiAgICAgICAgcmV0dXJuIDAuMDsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIHN0YWNrWy0tc3BdOwogICAgfQp9CiAKaW50IGlzRnVsbCh2b2lkKQp7CiAgICBpZihzcCA+PSBTSVpFKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KIAppbnQgaXNFbXB0eSh2b2lkKQp7CiAgICBpZihzcCA8PSAwKXsKICAgICAgICByZXR1cm4gMTsKICAgIH0KICAgIGVsc2V7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9Cn0KIAp2b2lkIGFuc3dlcih2b2lkKQp7CiAgICBpZihzcCA+IDApewogICAgICAgIHByaW50ZigiXG7oqIjnrpfntZDmnpwgPSAlLjZmXG4iLCBzdGFja1tzcC0xXSk7CiAgICB9CiAgICBlbHNlewogICAgICAgIHByaW50ZigiXG7jgrnjgr/jg4Pjgq/jgYznqbrjgafjgZlcbiIpOwogICAgfQp9CiAKdm9pZCByZXNldCh2b2lkKQp7CiAgICBzcCA9IDA7Cn0K