#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();
double val1, val2;
int choice;
while(1){
scanf("%d", &choice
); // 選択肢の入力を受け取る
switch(choice) {
case 1: // 足し算
if (!isEmpty()) {
val2 = pop();
val1 = pop();
push(val1 + val2);
}
break;
case 2: // 引き算
if (!isEmpty()) {
val2 = pop();
val1 = pop();
push(val1 - val2);
}
break;
case 3: // 掛け算
if (!isEmpty()) {
val2 = pop();
val1 = pop();
push(val1 * val2);
}
break;
case 4: // 割り算
if (!isEmpty()) {
val2 = pop();
val1 = pop();
if (val2 != 0) {
push(val1 / val2);
}
}
break;
case 5: // データ入力
if (!isFull()) {
push(val1);
printf("data: %.6lf\n", val1
); // dataの表示 }
break;
case 9: // 結果表示
answer();
return 0;
default:
// 不正な選択肢は無視
break;
}
}
return 0;
}
void push(double value)
{
if (!isFull()) {
stack[sp++] = value;
}
}
double pop(void)
{
if (!isEmpty()) {
return stack[--sp];
}
return 0; // エラー時は0を返す
}
int isFull(void)
{
return sp >= SIZE;
}
int isEmpty(void)
{
return sp == 0;
}
void answer(void)
{
if (!isEmpty()) {
printf("answer: %.6lf\n", stack
[sp
-1]); }
}
void reset(void)
{
sp = 0; // スタックポインタをリセット
}
I2luY2x1ZGU8c3RkaW8uaD4KCiNkZWZpbmUgU0laRSAxMApkb3VibGUgc3RhY2tbU0laRV07CmludCBzcDsgIC8vIOOCueOCv+ODg+OCr+ODneOCpOODs+OCvwoKLy8g6Zai5pWw44OX44Ot44OI44K/44Kk44OXCnZvaWQgcHVzaChkb3VibGUgdmFsdWUpOwpkb3VibGUgcG9wKHZvaWQpOwppbnQgaXNGdWxsKHZvaWQpOwppbnQgaXNFbXB0eSh2b2lkKTsKdm9pZCBhbnN3ZXIodm9pZCk7CnZvaWQgcmVzZXQodm9pZCk7CgppbnQgbWFpbih2b2lkKQp7CiAgICByZXNldCgpOwogICAgZG91YmxlIHZhbDEsIHZhbDI7CiAgICBpbnQgY2hvaWNlOwogICAgCiAgICB3aGlsZSgxKXsKICAgICAgICBzY2FuZigiJWQiLCAmY2hvaWNlKTsgIC8vIOmBuOaKnuiCouOBruWFpeWKm+OCkuWPl+OBkeWPluOCiwogICAgICAgIAogICAgICAgIHN3aXRjaChjaG9pY2UpIHsKICAgICAgICAgICAgY2FzZSAxOiAvLyDotrPjgZfnrpcKICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgICAgIHZhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgICAgICBwdXNoKHZhbDEgKyB2YWwyKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6IC8vIOW8leOBjeeulwogICAgICAgICAgICAgICAgaWYgKCFpc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICB2YWwyID0gcG9wKCk7CiAgICAgICAgICAgICAgICAgICAgdmFsMSA9IHBvcCgpOwogICAgICAgICAgICAgICAgICAgIHB1c2godmFsMSAtIHZhbDIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzogLy8g5o6b44GR566XCiAgICAgICAgICAgICAgICBpZiAoIWlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgICAgIHZhbDIgPSBwb3AoKTsKICAgICAgICAgICAgICAgICAgICB2YWwxID0gcG9wKCk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCh2YWwxICogdmFsMik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OiAvLyDlibLjgornrpcKICAgICAgICAgICAgICAgIGlmICghaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgdmFsMiA9IHBvcCgpOwogICAgICAgICAgICAgICAgICAgIHZhbDEgPSBwb3AoKTsKICAgICAgICAgICAgICAgICAgICBpZiAodmFsMiAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2godmFsMSAvIHZhbDIpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDU6IC8vIOODh+ODvOOCv+WFpeWKmwogICAgICAgICAgICAgICAgaWYgKCFpc0Z1bGwoKSkgewogICAgICAgICAgICAgICAgICAgIHNjYW5mKCIlbGYiLCAmdmFsMSk7CiAgICAgICAgICAgICAgICAgICAgcHVzaCh2YWwxKTsKICAgICAgICAgICAgICAgICAgICBwcmludGYoImRhdGE6ICUuNmxmXG4iLCB2YWwxKTsgIC8vIGRhdGHjga7ooajnpLoKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBjYXNlIDk6IC8vIOe1kOaenOihqOekugogICAgICAgICAgICAgICAgYW5zd2VyKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgIC8vIOS4jeato+OBqumBuOaKnuiCouOBr+eEoeimlgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gMDsKfQoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSkKewogICAgaWYgKCFpc0Z1bGwoKSkgewogICAgICAgIHN0YWNrW3NwKytdID0gdmFsdWU7CiAgICB9Cn0KCmRvdWJsZSBwb3Aodm9pZCkKewogICAgaWYgKCFpc0VtcHR5KCkpIHsKICAgICAgICByZXR1cm4gc3RhY2tbLS1zcF07CiAgICB9CiAgICByZXR1cm4gMDsgIC8vIOOCqOODqeODvOaZguOBrzDjgpLov5TjgZkKfQoKaW50IGlzRnVsbCh2b2lkKQp7CiAgICByZXR1cm4gc3AgPj0gU0laRTsKfQoKaW50IGlzRW1wdHkodm9pZCkKewogICAgcmV0dXJuIHNwID09IDA7Cn0KCnZvaWQgYW5zd2VyKHZvaWQpCnsKICAgIGlmICghaXNFbXB0eSgpKSB7CiAgICAgICAgcHJpbnRmKCJhbnN3ZXI6ICUuNmxmXG4iLCBzdGFja1tzcC0xXSk7ICAKICAgIH0KfQoKdm9pZCByZXNldCh2b2lkKQp7CiAgICBzcCA9IDA7ICAvLyDjgrnjgr/jg4Pjgq/jg53jgqTjg7Pjgr/jgpLjg6rjgrvjg4Pjg4gKfQo=