본문내용
char symbol;
precedence token;
int n=0,i=0,j=0;
int top=0;
stack[0]=eos;
for(token=get_token(&symbol,&n);token!=eos;token=get_token(&symbol,&n)) {
if(token==cha)
expr2[j++]=symbol;
else if(token==operand)
expr2[j++]=symbol;
else if(token==rparen) {
while(stack[top]!=lparen)
expr2[j++]=print_token(del(&top));
del(&top);
}
else {
while(isp[stack[top]]>=icp[token])
expr2[j++]=print_token(del(&top));
add(&top,token);
}
}
while((token=del(&top))!=eos)
expr2[j++]=print_token(token);
for(i=0;i<=j;i++) { // eval() 계산을 위해 임시의 배열 expr2 에서 expr 로 다시 복사
printf("%c",expr2[i]);
expr[i]=expr2[i];
}
printf("\n");
}
int main()
{
printf("infix -> postfix program\n\n");
printf("Input infix : ");
scanf("%s",expr);
printf("infix -> postfix = ");
postfix();
printf("\npostfix expr : %d\n",eval());
return 0;
}
precedence token;
int n=0,i=0,j=0;
int top=0;
stack[0]=eos;
for(token=get_token(&symbol,&n);token!=eos;token=get_token(&symbol,&n)) {
if(token==cha)
expr2[j++]=symbol;
else if(token==operand)
expr2[j++]=symbol;
else if(token==rparen) {
while(stack[top]!=lparen)
expr2[j++]=print_token(del(&top));
del(&top);
}
else {
while(isp[stack[top]]>=icp[token])
expr2[j++]=print_token(del(&top));
add(&top,token);
}
}
while((token=del(&top))!=eos)
expr2[j++]=print_token(token);
for(i=0;i<=j;i++) { // eval() 계산을 위해 임시의 배열 expr2 에서 expr 로 다시 복사
printf("%c",expr2[i]);
expr[i]=expr2[i];
}
printf("\n");
}
int main()
{
printf("infix -> postfix program\n\n");
printf("Input infix : ");
scanf("%s",expr);
printf("infix -> postfix = ");
postfix();
printf("\npostfix expr : %d\n",eval());
return 0;
}
소개글