I tried to run this program. I don't get any errors. But it cannot return the
output of this program. Help Me!?
What is the error of this program?
#include<stdio.h>
#define MAX 25
int stack[MAX],TOS=-1;
int precedance(char symbol)
{
int result;
switch(symbol)
{
case '(':
result=0;
break;
case '+':
case '-':
result=1;
break;
case '*':
case '/':
result=2;
break;
case '^':
result=3;
break;
}
return(result);
}
int isoperand(char symbol)
{
if((symbol>='a' && symbol<='z')||(symbol>='A'
&& symbol<='Z')||(symbol>='0' && symbol<='9'))
{
return 1;
}
else
{
return 0;
}
}
int isoperator(char symbol)
{
int result=0;
switch(symbol)
{
case '+':
case '-':
case '*':
case '/':
case '^':
result=1;
break;
}
return(result);
}
int main()
{
char infix[MAX],postfix[MAX];
int inputpointer,outputpointer;
inputpointer=outputpointer=-1;
stack[++TOS]='(';
printf("\n enter the infix expression");
scanf("%s",&infix[MAX]);
while(infix[++inputpointer]!='\0')
{
if(isoperand(infix[inputpointer]))
{
postfix[++outputpointer]=infix[inputpo…
}
else if(isoperator(infix[inputpointer]))
{
while(precedance(infix[inputpointer])<…
{
postfix[++outputpointer]=stack[TOS--];
}
stack[++TOS]=infix[inputpointer];
}
else if(infix[inputpointer]== '(' )
{
stack[++TOS]='(';
}
else if(infix[inputpointer]==')')
{
while(stack[TOS]!='(')
{
postfix[++outputpointer]=stack[TOS--];
}
TOS--;
}
else
{
printf("invalid symbol");
}
}
while(stack[TOS]!='(')
{
postfix[++outputpointer]=stack[TOS--];
}
postfix[++outputpointer]='\0';
printf("\n the postfix expression is %s",postfix);
return 0;
}
_______________________________________________
ILUGC Mailing List:
http://www.ae.iitm.ac.in/mailman/listinfo/ilugc