Go4Expert

Go4Expert (http://www.go4expert.com/)
-   C++ (http://www.go4expert.com/forums/cpp/)
-   -   why it doesnot works??? (http://www.go4expert.com/forums/doesnot-t18640/)

evangel 21Jul2009 02:30

why it doesnot works???
 
Code:

//Infix to postfix conversion

 #include <iostream>
 #include <cstring>
 #define max 20
  using namespace std;

 int tonum(char x)
 {
    if (x=='*')
    return 4;
    else if(x=='/')
    return 3;
    else if(x=='+')
    return 2;
    else
    return 1;
 }
 int preced(char x,char y)
 {
    int temp1=tonum(x);
    int temp2=tonum(y);
    if(temp1>=temp2)
    return 1;
    else
    return 0;
 }
 int isopn(char x)
 {
    int y=x;
    if(y<=57 && y>=48)
    return 1;
    else
    return 0;
 }

 class conv
 {
    char stack[max];
    int i,j;
    public:
      conv()
      {
      i=-1;
      j=0;
      }
      void push(char x);
      char pop();
      int isempty();
 };
 void conv::push(char x)
 {
    if(i==max-1)
    cout<<"\nStack Overflow: ";
    else
    stack[++i]=x;
 }
 char conv::pop()
 {
    return stack[i--];
 }
 int conv::isempty()
 {
    if(i<0)
    return 1;
    else
    return 0;
 }

 int main()
 {
    conv c;
    char out[max];
    char input[max];
    int i,j=0,len;
    char var,current;
    clrscr();

    cout<<"\nEnter the input Expression: ";
    cin>>input;
    clrscr();
    cout<<"\nInfix Expression: "<<input;
    len=strlen(input);
    //cout<<"\nlength="<<len;

    for(i=0,j=0;i<=len;i++)
    {
        var=input[i];
        if(isopn(var)==1)
        {
            out[j++]=var;

        }
        else if(var=='*')
        {
            if(c.isempty()==1)
            {
                c.push(var);
            }
            else
            {
            current=c.pop();
            if(preced(current,var)==0)
                c.push(var);
            else
            out[j++]=c.pop();
            }
        }
        else if(var=='/')
        {
            if(c.isempty()==1)
            {
                c.push(var);
            }
            else
            {
            current=c.pop();
            if(preced(current,var)==0)
                c.push(var);
            else
            out[j++]=c.pop();
            }
        }
        else if(var=='+')
        {
            if(c.isempty()==1)
            {
                c.push(var);
            }
            else
            {
            current=c.pop();
            if(preced(current,var)==0)
                c.push(var);
            else
            out[j++]=c.pop();
            }
        }
        else if(var=='-')
        {
            if(c.isempty()==1)
            {
                c.push(var);
            }
            else
            {
            current=c.pop();
            if(preced(current,var)==0)
                c.push(var);
            else
            out[j++]=c.pop();
            }
        }
    }

    cout<<"\nEquivalent Postfix conversion is: ";
    cout<<out;
    system("pause");
    return 0;
 }



All times are GMT +5.5. The time now is 03:14.