#include <stdio.h>
#include <ctype.h>
char stack[50];
int top=-1;
void push(char x)
{
stack[++top]=x;
}
char pop()
{
if(top==-1)
return -1;
else
return stack[top--];
}
이 기능은 사업자의 우선 순위를하는 데 사용됩니다이 프로그램은 중위 어를 역순으로 변환하여 런타임 오류를 발생시킵니다. 왜죠?
int priority(char x)
{
if(x=='+'|| x=='-') {
return 1;
} else if(x=='(') {
return 0;
} else if(x=='*'||x=='/') {
return 2;
} else {
return 3;
}
}
int main()
{
char exp[50], *e, x;
scanf("%s", exp);
e = exp;
while(*e != '\0') {
if(isalnum(*e)) {
printf("%c",*e);
} else {
while(priority(stack[top]) >= priority(*e)) {
printf("%c",pop());
}
push(*e);
}
e++;
}
while(top!=-1) {
printf("%c",pop());
}
return 0;
}
내가이 프로그램에 런타임 오류를 얻고있다. 나는 이유를 모른다. 내가 구현할 수있는 변경 사항을 제안 해 줄 수 있습니까? 일부 컴파일러에서는 출력을 무한 루프로 만듭니다.
어떤 오류가 발생합니까? – Gianluca
디버거를 사용하여 어디서 잘못되었는지보십시오. –