c++ - Infix to Postfix - Deleting Parenthesis -


having trouble getting parenthesis pop string. enter infix expression such (a+b)*c , ab+c*. instead, (ab)+c*. appreciated.

 string postfx::converttopostfix(postfx c,string in)     {     stack<char> s;     string postfx = "";        (int = 0; i<in.length();i++)     {         if (in[i] == ' ' || in[i] == ',') continue;          else if ((in[i]) == '+' || in[i] == '-' || in[i] == '/' || in[i] == '*')         {             while (!s.empty() && s.top() != '(' && c.precedence(s.top(), in[i]))             {                 postfx += s.top();                 s.pop();             }             s.push(in[i]);         }          else if ((in[i]) != '+' || in[i] != '-' || in[i] != '/' || in[i] != '*')         {             postfx += in[i];         }          else if (in[i] == '(')         {             s.push(in[i]);         }         else if (in[i] == ')')         {             while (!s.empty() && s.top() != '(')             {                 postfx += s.top();                 s.pop();             }             s.pop();         }     }      while (!s.empty()) {         postfx += s.top();         s.pop();     }      return postfx; } 

i think your

else if ((in[i]) != '+' || in[i] != '-' || in[i] != '/' || in[i] != '*') 

line catches brackets well,

else if (in[i] == '(') 

and below never gets executed.

i think should move

else if ((in[i]) != '+' || in[i] != '-' || in[i] != '/' || in[i] != '*') 

to last option in chained if.

moreover, if catches absolutely any symbol (because symbol either not equal '+', or not equal '-'). need replace || &&; if anyway have if last in chained if, need no condition there @ all, like:

if ((in[i] == ' ')|| ... else if ((in[i] == '+')|| ... else if (in[i] == '(') ... else if (in[i] == ')') ... else postfx += in[i]; // no condition here 

p.s. if wrap initial expression in brackets:

in = "(" + in + ")" 

before loop, not need final while (!s.empty()) loop.


Comments

Popular posts from this blog

php - failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request -

java - How to filter a backspace keyboard input -

java - Show Soft Keyboard when EditText Appears -