cpp infix to postfix.
//aight bru, lessgo. // use this exammple->(a-b/c)*(a/k-l) and implent code on paper to get a good idea. #include<iostream> #include<stack> using namespace std; int prec(char c) { if(c=='^') return 3; else if(c=='*' || c=='/') return 2; else if(c=='+' || c=='-') return 1; else return -1; // for open brackets. coz we have to pop until we find an opening bracket. } string infixtopostfix(string s) { stack<char>st; string res=""; for(int i=0;i<s.length();i++) { if((s[i]>='a' && s[i]<='z')||(s[i]>='A' && s[i]<='Z')) res=res+s[i]; else if(s[i]=='(') st.push(s[i]); else if(s[i]==')') { while(!st.empty() && st.top()!='(') { res=res+st.top(); st.pop(); } if(!st.empty()) st.pop(); } else { while(!st.empty() && prec(st.top())>prec(s[i]) ) { res=res+st.top(); st.pop(); } st.push(s[i]); } } while(!st.empty()) { res=res+st.top(); st.pop(); } return res; } int main() { string s; cin>>s; cout<<infixtopostfix(s); return 0; }
postfix to infix c program
#include<stdio.h> int main() { char str[100],oprator[100],operant[100]; int i ,opr=-1,op=-1; printf("enter the string"); scanf("%s",str); for (i=0;str[i]!=NULL;i++) { if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='^'||str[i]=='/') { (opr)++; oprator[opr]=str[i]; } else { (op)++; operant[op]=str[i]; } } printf("operator are:\n"); for (i=0;i<=opr;i++) printf("%c",oprator[i]); printf("\noperandas are:\n"); for (i=0;i<=op;i++) printf("%c",operant[i]); return 0; }
infix to postfix in c++
#include<iostream> #include<stack> using namespace std; bool isOperator(char c) { if(c=='+'||c=='-'||c=='*'||c=='/'||c=='^') { return true; } else { return false; } } int precedence(char c) { if(c == '^') return 3; else if(c == '*' || c == '/') return 2; else if(c == '+' || c == '-') return 1; else return -1; } string InfixToPostfix(stack<char> s, string infix) { string postfix; for(int i=0;i<infix.length();i++) { if((infix[i] >= 'a' && infix[i] <= 'z') ||(infix[i] >= 'A' && infix[i] <= 'Z')) { postfix+=infix[i]; } else if(infix[i] == '(') { s.push(infix[i]); } else if(infix[i] == ')') { while((s.top()!='(') && (!s.empty())) { char temp=s.top(); postfix+=temp; s.pop(); } if(s.top()=='(') { s.pop(); } } else if(isOperator(infix[i])) { if(s.empty()) { s.push(infix[i]); } else { if(precedence(infix[i])>precedence(s.top())) { s.push(infix[i]); } else if((precedence(infix[i])==precedence(s.top()))&&(infix[i]=='^')) { s.push(infix[i]); } else { while((!s.empty())&&( precedence(infix[i])<=precedence(s.top()))) { postfix+=s.top(); s.pop(); } s.push(infix[i]); } } } } while(!s.empty()) { postfix+=s.top(); s.pop(); } return postfix; } int main() { string infix_exp, postfix_exp; cout<<"Enter a Infix Expression :"<<endl; cin>>infix_exp; stack <char> stack; cout<<"INFIX EXPRESSION: "<<infix_exp<<endl; postfix_exp = InfixToPostfix(stack, infix_exp); cout<<endl<<"POSTFIX EXPRESSION: "<<postfix_exp; return 0; }
Source: simplesnippets.tech