Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstring>
- #include<stack>
- #include<stdio.h>
- using namespace std;
- int getPrecidence(char ch)
- {
- switch(ch)
- {
- case '/':
- case '*': return 2;
- case '+':
- case '-': return 1;
- default : return 0;
- }
- }
- int main()
- {
- char infix[100];
- gets(infix);
- int size = strlen(infix);
- char ch,postfix[size];
- int i=0,j=0,precedence=0;
- stack<char> myStack;
- while(i<size)
- {
- ch = infix[i];
- if(ch == '(')
- {
- myStack.push(ch);
- i++;
- continue;
- }
- if(ch == ')')
- {
- while(!myStack.empty() && myStack.top() != '(')
- {
- postfix[j++] = myStack.top();
- myStack.pop();
- }
- if(!myStack.empty())
- {
- myStack.pop();
- }
- i++;
- continue;
- }
- precedence = getPrecidence(ch);
- if(precedence == 0)
- {
- postfix[j++] = ch;
- }
- else
- {
- while(!myStack.empty() && myStack.top() != '(' && precedence <= getPrecidence(myStack.top()) )
- {
- postfix[j++] = myStack.top();
- myStack.pop();
- }
- myStack.push(ch);
- }
- i++;
- }
- while(!myStack.empty())
- {
- postfix[j++] = myStack.top();
- myStack.pop();
- }
- cout << "Postfix conversion is...." <<endl;
- for(i=0; i<size; i++)
- {
- cout << postfix[i];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment