#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)
{
reset();
printf("1:+ 2:- 3:* 4:/ 5:data 9:end\n"); double a,b;
while(1){
int resp;
double data;
if(resp == 9) break;
switch(resp){
case 1:push(pop() + pop()); break;
case 2:a = pop(); b = pop();
push(b - a); break;
case 3:push(pop() * pop()); break;
case 4:a = pop(); b = pop();
push(b / a); break;
case 5:printf("push:"); scanf("%lf", &data
); printf("%lf\n", data
); push
(data
); break;
}
}
answer();
return 0;
}
void push(double value){
if(isFull()){
}
else{
stack[sp++] = value;
}
}
double pop(void){
if(isEmpty()){
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("\n計算結果:%lf\n", stack
[0]); return;
}
void reset(void){
while(!isEmpty()){
pop();
}
}
I2luY2x1ZGU8c3RkaW8uaD4KCiNkZWZpbmUgU0laRSAxMApkb3VibGUgc3RhY2tbU0laRV07CmludCBzcDsKCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpOwpkb3VibGUgcG9wKHZvaWQpOwppbnQgaXNGdWxsKHZvaWQpOwppbnQgaXNFbXB0eSh2b2lkKTsKdm9pZCBhbnN3ZXIodm9pZCk7CnZvaWQgcmVzZXQodm9pZCk7CgppbnQgbWFpbih2b2lkKQp7CiAgICByZXNldCgpOwogICAgcHJpbnRmKCIxOisgMjotIDM6KiA0Oi8gNTpkYXRhIDk6ZW5kXG4iKTsKICAgIGRvdWJsZSBhLGI7CiAgICAKd2hpbGUoMSl7CglpbnQgcmVzcDsKICAgIGRvdWJsZSBkYXRhOwoJCglzY2FuZigiJWQiLCAmcmVzcCk7CiAgIAlpZihyZXNwID09IDkpIGJyZWFrOwogICAKICAgc3dpdGNoKHJlc3ApewogICAKICAgCQogICAJY2FzZSAxOnB1c2gocG9wKCkgKyBwb3AoKSk7IGJyZWFrOwogICAJCiAgIAljYXNlIDI6YSA9IHBvcCgpOyBiID0gcG9wKCk7CiAgIAkgICAgICAgcHVzaChiIC0gYSk7IGJyZWFrOwogICAJCiAgIAljYXNlIDM6cHVzaChwb3AoKSAqIHBvcCgpKTsgYnJlYWs7CiAgIAkKICAgCWNhc2UgNDphID0gcG9wKCk7IGIgPSBwb3AoKTsKICAgCSAgICAgICBwdXNoKGIgLyBhKTsgYnJlYWs7CiAgIAkKICAgCWNhc2UgNTpwcmludGYoInB1c2g6Iik7IHNjYW5mKCIlbGYiLCAmZGF0YSk7IHByaW50ZigiJWxmXG4iLCBkYXRhKTsgcHVzaChkYXRhKTsgYnJlYWs7CiAgIAkKICAgfQp9CiAgICBhbnN3ZXIoKTsKCiAgICByZXR1cm4gMDsKfQoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSl7CglpZihpc0Z1bGwoKSl7CgkJcHJpbnRmKCLjgrnjgr/jg4Pjgq/muoDmna9cbiIpOwoJfQoJZWxzZXsKCQlzdGFja1tzcCsrXSA9IHZhbHVlOwoJfQp9Cgpkb3VibGUgcG9wKHZvaWQpewoJaWYoaXNFbXB0eSgpKXsKCQlwcmludGYoIuOCueOCv+ODg+OCr+epulxuIik7CgkJcmV0dXJuIDA7Cgl9CgllbHNlewoJCXJldHVybiBzdGFja1stLXNwXTsKCX0KfQoKaW50IGlzRnVsbCh2b2lkKXsKCWlmKHNwID49IFNJWkUpewoJCXJldHVybiAxOwoJfQoJZWxzZXsKCQlyZXR1cm4gMDsKCX0KfQoKaW50IGlzRW1wdHkodm9pZCl7CglpZihzcCA8PSAwKXsKCQlyZXR1cm4gMTsKCX0KCWVsc2V7CgkJcmV0dXJuIDA7Cgl9Cn0KCnZvaWQgYW5zd2VyKHZvaWQpewoJcHJpbnRmKCJcbuioiOeul+e1kOaenO+8miVsZlxuIiwgc3RhY2tbMF0pOwoJcmV0dXJuOwp9Cgp2b2lkIHJlc2V0KHZvaWQpewoJd2hpbGUoIWlzRW1wdHkoKSl7CgkJcG9wKCk7Cgl9Cn0K