Register to reply

C++: Postfix to Infix

by mohammed1
Tags: infix, postfix
Share this thread:
mohammed1
#1
Nov30-07, 04:15 AM
P: 2
I need the program that solve expression from postfix to infix please help me

like that : abc+* to (a*(b+c))

this code to solve from infix to posfix :
PHP Code:
// the program is used to convert a infix expression to a postfix expression

#include<iostream.h>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include<stdlib.h>



const int size =50;
char infix[size],postfix[size],stack[size];
int top=-1;

int precedence(char ch);   // function to get the precedence of the operator
char pop();  //function to pop an element from the stack
char topelement();  // returns the top element of the stack
void push(char ch);  // pushes an element into the stack



int main()
{
     
char ele,elem,st[2];
     
int prep,pre,popped,j=0,chk=0;
     
strcpy(postfix," ");
         
     
gets(infix);
     
     for(
int i=0;infix[i]!=0;i++)
          {
                  if(
infix[i]!='('&&infix[i]!=')'&&infix[i]!='^'&&infix[i]!='*'&&infix[i]!='/'&&infix[i]!='+'&&infix[i]!='-')     
                       
postfix[j++]=infix[i];
                  else if(
infix[i]=='(')
                      {
                         
elem=infix[i];
                         
push(elem);
                      }
                  else if(
infix[i]==')')
                      {
                         while(
popped=pop() != '(')
                             
postfix[j++]=popped;
                      }
                  else
                      {
                         
elem=infix[i];
                         
pre=precedence(elem);//stores the precedence of operator coming frm infix
                         
ele=topelement();
                         
prep=precedence(ele);//stores the precedence of operator at the top of the stack
                        
                         
if(pre prep)
                           
push(elem);                                         
                           
                         else
                           {
                                while(
prep >= pre)
                                  {
                                     if(
ele=='#')
                                       break;
                                     
popped=pop();
                                     
ele=topelement();
                                     
postfix[j++]=popped;
                                     
prep=precedence(ele);
                                   }
                                   
push(elem);
                            }
                         }
             } 
             
          while((
popped=pop())!='#')
              
postfix[j++]=popped;
          
postfix[j]='\0';
          
          
cout<<"\n post fix :"<<postfix<<endl;
           
           
system("pause");
           return 
0;
}

int precedence(char ch)
{
       switch(
ch)
          {
               case 
'^' : return 5;
               case 
'/' : return 4;
               case 
'*' : return 4;                                            
               case 
'+' : return 3;
               case 
'-' : return 3;
               default  : return 
0;
          }
}

char pop()                  //function to pop the element from the stack
{
     
char ret;
     if(
top!=-1)
       {  
ret =stack[top];
          
top--;
          return 
ret;
       }
     else
        return 
'#';
}
                         
char topelement()          // function to return top element from the stack without popping
{     
      
char ch;
      if(
top!=-1)
        
ch=stack[top];
      else
         
ch='#';
       return 
ch;
}

void push(char ch)          // function to push an element in the stack
{
     if(
top!=size-1)
         {
            
top++;
            
stack[top]= ch;
         }

I want reverse this code .
please help me .......
Phys.Org News Partner Science news on Phys.org
Scientists develop 'electronic nose' for rapid detection of C. diff infection
Why plants in the office make us more productive
Tesla Motors dealing as states play factory poker

Register to reply

Related Discussions
C++: Postfix to Infix Engineering, Comp Sci, & Technology Homework 1