これが書いたコードです。
#include <stdio.h>
#include <stdlib.h>
int main(void) {
double stack[200];
char temp[100];
int stackptr=0;
while(1) {
if(scanf("%s",temp)==-1)break;
if(temp[0]=='+') {
if(stackptr<2)return 1;
stack[stackptr-2]+=stack[stackptr-1];
stackptr--;
} else if(temp[0]=='-') {
if(stackptr<2)return 1;
stack[stackptr-2]-=stack[stackptr-1];
stackptr--;
} else if(temp[0]=='*') {
if(stackptr<2)return 1;
stack[stackptr-2]*=stack[stackptr-1];
stackptr--;
} else if(temp[0]=='/') {
if(stackptr<2)return 1;
if(stack[stackptr-1]==0)return 1;
stack[stackptr-2]/=stack[stackptr-1];
stackptr--;
} else {
stack[stackptr]=atof(temp);
stackptr++;
}
if(getchar()=='\n') {
if(stackptr!=1)return 1;
printf("%f\n",stack[0]);
stackptr=0;
}
}
return 0;
}
デバッグしてみたところ、4つある のところのいずれかで弾かれているようです。
ここは、スタックに積まれている数が少なすぎないかの判定をしています。
ここを取ってもRuntime Errorになります。
どこが間違っているか教えていただけると嬉しいです。
よろしくお願いします。