#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){
double data;
double cal1, cal2;
int resp;
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();
push( cal2 / cal1 );
break;
push( data );
break;
}
}
answer();
return 0;
}
void push(double value)
{
if( isFull() ){
}else{
stack[sp++] = value;
}
}
double 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 ("answer:%lf\n", stack
[0]); }
void reset(void)
{
while(!isEmpty())
pop();
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIFNJWkUgMTAKCmRvdWJsZSBzdGFja1tTSVpFXTsKaW50IHNwOwoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSk7CmRvdWJsZSBwb3Aodm9pZCk7CmludCBpc0Z1bGwodm9pZCk7CmludCBpc0VtcHR5KHZvaWQpOwp2b2lkIGFuc3dlcih2b2lkKTsKdm9pZCByZXNldCh2b2lkKTsKCmludCBtYWluKHZvaWQpCnsKICAgIGludCByZXNwOwogICAgZG91YmxlIGRhdGEsIGNhbDEsIGNhbDI7CgogICAgcmVzZXQoKTsKCiAgIHdoaWxlKDEpewogICAgICAgIGRvdWJsZSBkYXRhOwogICAgICAgIGRvdWJsZSBjYWwxLCBjYWwyOwogICAgICAgIGludCByZXNwOwogICAgCiAgICAgICAgc2NhbmYoIiVkIiwgJnJlc3ApOwoKICAgICAgICBpZiggcmVzcCA9PSA5ICkgIGJyZWFrOwoKICAgICAgICBzd2l0Y2gocmVzcCl7CiAgICAgICAgICAgIGNhc2UgMTogY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgICAgIGNhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBjYWwyICsgY2FsMSApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSAyOiBjYWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICAgICAgY2FsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgICAgIHB1c2goIGNhbDIgLSBjYWwxICk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIDM6IGNhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgICAgICBjYWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggY2FsMiAqIGNhbDEgKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAgIGNhc2UgNDogY2FsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgICAgIGNhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgICAgICBwdXNoKCBjYWwyIC8gY2FsMSApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgY2FzZSA1OiBwcmludGYoImRhdGE6Iik7IHNjYW5mKCIlbGYiLCAmZGF0YSk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCggZGF0YSApOwogICAgICAgICAgICAgICAgICAgIHByaW50ZigiJWxmXG4iLCBkYXRhKTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgYW5zd2VyKCk7CgogICAgcmV0dXJuIDA7Cn0KCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpCnsKICAgIGlmKCBpc0Z1bGwoKSApewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM5rqA5p2v44Gn5YWl44KK44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgIH1lbHNlewogICAgICAgIHN0YWNrW3NwKytdID0gdmFsdWU7CiAgICB9Cn0KCmRvdWJsZSBwb3Aodm9pZCkKewogICAgaWYoIGlzRW1wdHkoKSApewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44GM56m644Gn5Y+W44KK5Ye644Gb44G+44Gb44KT44Gn44GX44GfXG4iKTsKICAgICAgICByZXR1cm4gMDsKICAgIH1lbHNlewogICAgICAgIHJldHVybiBzdGFja1stLXNwXTsKICAgIH0KfQoKaW50IGlzRnVsbCh2b2lkKQp7CiAgICBpZihzcCA+PSBTSVpFKXsKICAgICAgICByZXR1cm4gMTsKICAgIH1lbHNlewogICAgICAgIHJldHVybiAwOwogICAgfQp9CgppbnQgaXNFbXB0eSh2b2lkKQp7CiAgICBpZihzcCA8PSAwKXsKICAgICAgICByZXR1cm4gMTsKICAgIH1lbHNlewogICAgICAgIHJldHVybiAwOwogICAgfQp9Cgp2b2lkIGFuc3dlcih2b2lkKQp7CiAgICBwcmludGYgKCJcbiIpOwogICAgcHJpbnRmICgiYW5zd2VyOiVsZlxuIiwgc3RhY2tbMF0pOwp9Cgp2b2lkIHJlc2V0KHZvaWQpCnsKICAgIHdoaWxlKCFpc0VtcHR5KCkpCiAgICAgICAgcG9wKCk7Cn0K