#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();
int resp;
double data, a, b; // a, b, data を double 型に変更
while(1){
// 9が入力された、または0以下、6〜8が入力されたらループを抜ける(終了)
if(resp == 9 || resp <= 0 || resp > 5) break;
switch(resp){
case 1:
b = pop(); // 先にポップしたものが右項(b)
a = pop(); // 次にポップしたものが左項(a)
push(a + b);
break;
case 2:
b = pop();
a = pop();
push(a - b); // a - b の順に修正
break;
case 3:
b = pop();
a = pop();
push(a * b);
break;
case 4:
b = pop();
a = pop();
if (b != 0) {
push(a / b); // a / b の順に修正
} else {
printf("エラー: 0で割ることはできません\n"); push(a); // 状態を戻すために戻しておく
}
break;
case 5:
scanf("%lf", &data
); // double型なので %lf を使用 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){
if (sp > 0) {
printf("answer:%f\n", stack
[sp
- 1]); } else {
}
}
void reset(void){
sp = 0; // セミコロンを追加
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgU0laRSAxMAoKZG91YmxlIHN0YWNrW1NJWkVdOwppbnQgc3A7Cgp2b2lkIHB1c2goZG91YmxlIHZhbHVlKTsKZG91YmxlIHBvcCh2b2lkKTsKaW50IGlzRnVsbCh2b2lkKTsKaW50IGlzRW1wdHkodm9pZCk7CnZvaWQgYW5zd2VyKHZvaWQpOwp2b2lkIHJlc2V0KHZvaWQpOwoKaW50IG1haW4odm9pZCkgewogICAgcmVzZXQoKTsKICAgIGludCByZXNwOwogICAgZG91YmxlIGRhdGEsIGEsIGI7IC8vIGEsIGIsIGRhdGEg44KSIGRvdWJsZSDlnovjgavlpInmm7QKCiAgICB3aGlsZSgxKXsKIAogICAgICAgIHNjYW5mKCIlZCIsICZyZXNwKTsKICAgICAgICAKICAgICAgICAvLyA544GM5YWl5Yqb44GV44KM44Gf44CB44G+44Gf44GvMOS7peS4i+OAgTbjgJw444GM5YWl5Yqb44GV44KM44Gf44KJ44Or44O844OX44KS5oqc44GR44KL77yI57WC5LqG77yJCiAgICAgICAgaWYocmVzcCA9PSA5IHx8IHJlc3AgPD0gMCB8fCByZXNwID4gNSkgYnJlYWs7IAogICAgICAgIAogICAgICAgIHN3aXRjaChyZXNwKXsKICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgYiA9IHBvcCgpOyAvLyDlhYjjgavjg53jg4Pjg5fjgZfjgZ/jgoLjga7jgYzlj7PpoIUoYikKICAgICAgICAgICAgICAgIGEgPSBwb3AoKTsgLy8g5qyh44Gr44Od44OD44OX44GX44Gf44KC44Gu44GM5bem6aCFKGEpCiAgICAgICAgICAgICAgICBwdXNoKGEgKyBiKTsgCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgYiA9IHBvcCgpOyAKICAgICAgICAgICAgICAgIGEgPSBwb3AoKTsgCiAgICAgICAgICAgICAgICBwdXNoKGEgLSBiKTsgLy8gYSAtIGIg44Gu6aCG44Gr5L+u5q2jCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSAzOgogICAgICAgICAgICAgICAgYiA9IHBvcCgpOyAKICAgICAgICAgICAgICAgIGEgPSBwb3AoKTsgCiAgICAgICAgICAgICAgICBwdXNoKGEgKiBiKTsgCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA0OgogICAgICAgICAgICAgICAgYiA9IHBvcCgpOyAKICAgICAgICAgICAgICAgIGEgPSBwb3AoKTsgCiAgICAgICAgICAgICAgICBpZiAoYiAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaChhIC8gYik7IC8vIGEgLyBiIOOBrumghuOBq+S/ruatowogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwcmludGYoIuOCqOODqeODvDogMOOBp+WJsuOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk1xuIik7CiAgICAgICAgICAgICAgICAgICAgcHVzaChhKTsgLy8g54q25oWL44KS5oi744GZ44Gf44KB44Gr5oi744GX44Gm44GK44GPCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY2FzZSA1OgogICAgICAgICAgICAgICAgc2NhbmYoIiVsZiIsICZkYXRhKTsgLy8gZG91Ymxl5Z6L44Gq44Gu44GnICVsZiDjgpLkvb/nlKgKICAgICAgICAgICAgICAgIHB1c2goZGF0YSk7CiAgICAgICAgICAgICAgICBwcmludGYoImRhdGE6JWZcbiIsIGRhdGEpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgfQogICAgYW5zd2VyKCk7CiAgICByZXR1cm4gMDsKfQoKdm9pZCBwdXNoKGRvdWJsZSB2YWx1ZSl7CiAgICBpZihpc0Z1bGwoKSl7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYzmuoDmna/jgaflhaXjgorjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgfWVsc2V7CiAgICAgICAgc3RhY2tbc3ArK10gPSB2YWx1ZTsKICAgIH0KfQoKZG91YmxlIHBvcCh2b2lkKXsKICAgIGlmKGlzRW1wdHkoKSl7CiAgICAgICAgcHJpbnRmKCLjgrnjgr/jg4Pjgq/jgYznqbrjgaflj5bjgorlh7rjgZvjgb7jgZvjgpPjgafjgZfjgZ9cbiIpOwogICAgICAgIHJldHVybiAwOwogICAgfWVsc2V7CiAgICAgICAgcmV0dXJuIHN0YWNrWy0tc3BdOwogICAgfQp9CgppbnQgaXNGdWxsKHZvaWQpewogICAgaWYoc3AgPj0gU0laRSl7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9ZWxzZXsKICAgICAgICByZXR1cm4gMDsKICAgIH0KfQoKaW50IGlzRW1wdHkodm9pZCl7CiAgICBpZihzcCA8PSAwKXsKICAgICAgICByZXR1cm4gMTsKICAgIH1lbHNlewogICAgICAgIHJldHVybiAwOwogICAgfQp9Cgp2b2lkIGFuc3dlcih2b2lkKXsKICAgIGlmIChzcCA+IDApIHsKICAgICAgICBwcmludGYoImFuc3dlcjolZlxuIiwgc3RhY2tbc3AgLSAxXSk7CiAgICB9IGVsc2UgewogICAgICAgIHByaW50Zigi44K544K/44OD44Kv44Gr57WQ5p6c44GM44GC44KK44G+44Gb44KTXG4iKTsKICAgIH0KfQoKdm9pZCByZXNldCh2b2lkKXsKICAgIHNwID0gMDsgLy8g44K744Of44Kz44Ot44Oz44KS6L+95YqgCn0K