int main() { int i=0,j=0,x,item; printf("enter infix expression\n"); gets(inexp); // puts(inexp); item=inexp[i];i++; while(item!='\0') { if(item=='(') { push(item); } else if((item>='A'&&item<='Z')||(item>='a'&&item<='z')) { postexp[j]=item;j++; } else if(isop(item)==1) { x=pop(); while(isop(x)==1&&(preced(x)>=preced(item))) { postexp[j]=x;j++; x=pop(); } push(x); push(item); } else if(item==')') { x=pop(); while(x!='(') { postexp[j]=x; j++; x=pop(); } } else { printf("\ninvalid arithmetic expression"); } item=inexp[i]; i++; } x=pop(); while(x!='a') { postexp[j]=x; j++; x=pop(); } postexp[j++]='\0'; printf("\npostfix expression\n"); puts(postexp); getch(); return 0; }
void main() { char str[100],temp; int len,inp_ptr=0,f,prec,no; printf("\nEnter the expression :"); scanf("%s",str); push('$'); len=strlen(str); str[len]='$'; str[len+1]='\0'; puts(str); while(str[inp_ptr]!='$'|| peek()!='$') { f=0; printf("\nin the while"); if(str[inp_ptr]>='0'&&str[inp_ptr]<='9'){ no=atoi(&str[inp_ptr++]); printf("#####%d###",no); while(str[inp_ptr]<='0'&&str[inp_ptr]>='9') inp_ptr++; str[inp_ptr--]='i'; f=1; } prec=preced(peek(),str[inp_ptr]); printf("@@%d@@",prec); printf("reached here1"); if(prec==0) { if(f==1) pushres(no); push(str[inp_ptr++]); } else if(prec==1) { do{ temp=pop(); printf("reached here<F2>"); switch(temp){ case '+': pushres(popres()+popres());break; case '*': pushres(popres()*popres());break; } }while(preced(peek(),temp)!=0); } else error(); } printf("Result=%d\n",popres()); }
void in_to_post(char infix[]) { int length; static int index=0,pos=0; char symbol,temp; char postfix[40]; length=strlen(infix); push('#'); while(index<length) { symbol=infix[index]; switch(symbol) { case'(':push(symbol); break; case')' :temp=pop(); while(temp!='(') { postfix[pos]=temp; pos++; temp=pop(); } break; case '+' : case '-' : case '*' : case '/' : case '^' : while (preced(stack[top])>=preced(symbol)) { temp=pop(); postfix[pos]=temp; pos++; } push(symbol); break; default : postfix[pos++]=symbol; break; } index++; } while(top>0) { temp=pop(); postfix[pos++]=temp; } postfix[pos++]='\0'; puts(postfix); return; }