#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 choice;
double val, val1, val2;
reset();
// (1) メイン処理のループ
while(1){
if (scanf("%d", &choice
) == EOF
) break;
if (choice == 9) { // 9で計算結果表示・終了
break;
}
switch(choice) {
case 1: // 足し算 (+)
val2 = pop();
val1 = pop();
push(val1 + val2);
break;
case 2: // 引き算 (-)
val2 = pop();
val1 = pop();
push(val1 - val2);
break;
case 3: // 掛け算 (*)
val2 = pop();
val1 = pop();
push(val1 * val2);
break;
case 4: // 割り算 (/)
val2 = pop();
val1 = pop();
push(val1 / val2);
break;
case 5: // データ入力
push(val);
break;
default:
break;
}
}
answer();
return 0;
}
// (2) reset 関数:スタックを初期化
void reset(void) {
sp = 0;
}
// (3) answer 関数:結果を表示
void answer(void) {
if (!isEmpty()) {
printf("answer:%f\n", stack
[sp
- 1]); }
}
// (4) isEmpty 関数:スタックが空かどうか判定
int isEmpty(void) {
return (sp <= 0);
}
// (5) isFull 関数:スタックが満杯かどうか判定
int isFull(void) {
return (sp >= SIZE);
}
// (6) pop 関数:スタックから値を取り出す
double pop(void) {
if (!isEmpty()) {
sp--;
return stack[sp];
}
return 0.0;
}
// (7) push 関数:スタックに値を追加
void push(double value) {
if (!isFull()) {
stack[sp] = value;
sp++;
}
}
I2luY2x1ZGU8c3RkaW8uaD4KI2RlZmluZSBTSVpFIDEwCgpkb3VibGUgc3RhY2tbU0laRV07CmludCBzcDsKCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpOwpkb3VibGUgcG9wKHZvaWQpOwppbnQgaXNGdWxsKHZvaWQpOwppbnQgaXNFbXB0eSh2b2lkKTsKdm9pZCBhbnN3ZXIodm9pZCk7CnZvaWQgcmVzZXQodm9pZCk7CgppbnQgbWFpbih2b2lkKSB7CiAgICBpbnQgY2hvaWNlOwogICAgZG91YmxlIHZhbCwgdmFsMSwgdmFsMjsKCiAgICByZXNldCgpOwoKICAgIC8vICgxKSDjg6HjgqTjg7Plh6bnkIbjga7jg6vjg7zjg5cKICAgIHdoaWxlKDEpewogICAgICAgIGlmIChzY2FuZigiJWQiLCAmY2hvaWNlKSA9PSBFT0YpIGJyZWFrOwoKICAgICAgICBpZiAoY2hvaWNlID09IDkpIHsgLy8gOeOBp+ioiOeul+e1kOaenOihqOekuuODu+e1guS6hgogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIHN3aXRjaChjaG9pY2UpIHsKICAgICAgICAgICAgY2FzZSAxOiAvLyDotrPjgZfnrpcgKCspCiAgICAgICAgICAgICAgICB2YWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICB2YWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKHZhbDEgKyB2YWwyKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6IC8vIOW8leOBjeeulyAoLSkKICAgICAgICAgICAgICAgIHZhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHZhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgIHB1c2godmFsMSAtIHZhbDIpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzogLy8g5o6b44GR566XICgqKQogICAgICAgICAgICAgICAgdmFsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgdmFsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgcHVzaCh2YWwxICogdmFsMik7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OiAvLyDlibLjgornrpcgKC8pCiAgICAgICAgICAgICAgICB2YWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICB2YWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICBwdXNoKHZhbDEgLyB2YWwyKTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDU6IC8vIOODh+ODvOOCv+WFpeWKmwogICAgICAgICAgICAgICAgc2NhbmYoIiVsZiIsICZ2YWwpOwogICAgICAgICAgICAgICAgcHVzaCh2YWwpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICB9CgogICAgYW5zd2VyKCk7CiAgICByZXR1cm4gMDsKfQoKLy8gKDIpIHJlc2V0IOmWouaVsO+8muOCueOCv+ODg+OCr+OCkuWIneacn+WMlgp2b2lkIHJlc2V0KHZvaWQpIHsKICAgIHNwID0gMDsKfQoKLy8gKDMpIGFuc3dlciDplqLmlbDvvJrntZDmnpzjgpLooajnpLoKdm9pZCBhbnN3ZXIodm9pZCkgewogICAgaWYgKCFpc0VtcHR5KCkpIHsKICAgICAgICBwcmludGYoImFuc3dlcjolZlxuIiwgc3RhY2tbc3AgLSAxXSk7CiAgICB9Cn0KCi8vICg0KSBpc0VtcHR5IOmWouaVsO+8muOCueOCv+ODg+OCr+OBjOepuuOBi+OBqeOBhuOBi+WIpOWumgppbnQgaXNFbXB0eSh2b2lkKSB7CiAgICByZXR1cm4gKHNwIDw9IDApOwp9CgovLyAoNSkgaXNGdWxsIOmWouaVsO+8muOCueOCv+ODg+OCr+OBjOa6gOadr+OBi+OBqeOBhuOBi+WIpOWumgppbnQgaXNGdWxsKHZvaWQpIHsKICAgIHJldHVybiAoc3AgPj0gU0laRSk7Cn0KCi8vICg2KSBwb3Ag6Zai5pWw77ya44K544K/44OD44Kv44GL44KJ5YCk44KS5Y+W44KK5Ye644GZCmRvdWJsZSBwb3Aodm9pZCkgewogICAgaWYgKCFpc0VtcHR5KCkpIHsKICAgICAgICBzcC0tOwogICAgICAgIHJldHVybiBzdGFja1tzcF07CiAgICB9CiAgICByZXR1cm4gMC4wOwp9CgovLyAoNykgcHVzaCDplqLmlbDvvJrjgrnjgr/jg4Pjgq/jgavlgKTjgpLov73liqAKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSkgewogICAgaWYgKCFpc0Z1bGwoKSkgewogICAgICAgIHN0YWNrW3NwXSA9IHZhbHVlOwogICAgICAgIHNwKys7CiAgICB9Cn0K