#include<iostream> #include<stack> using namespace std; // defines the Boolean function for operator, operand, equalOrhigher precedence and the string conversion function. bool IsOperator(char); bool IsOperand(char); bool eqlOrhigher(char, char); string convert(string); int main() { string infix_expression, postfix_expression; int ch; do { cout << " Enter an infix expression: "; cin >> infix_expression; postfix_expression = convert(infix_expression); cout << "\n Your Infix expression is: " << infix_expression; cout << "\n Postfix expression is: " << postfix_expression; cout << "\n \t Do you want to enter infix expression (1/ 0)?"; cin >> ch; //cin.ignore(); } while(ch == 1); return 0; } // define the IsOperator() function to validate whether any symbol is operator. /* If the symbol is operator, it returns true, otherwise false. */ bool IsOperator(char c) { if(c == '+' || c == '-' || c == '*' || c == '/' || c == '^' ) return true; return false; } // IsOperand() function is used to validate whether the character is operand. bool IsOperand(char c) { if( c >= 'A' && c <= 'Z') /* Define the character in between A to Z. If not, it returns False.*/ return true; if (c >= 'a' && c <= 'z') // Define the character in between a to z. If not, it returns False. */ return true; if(c >= '0' && c <= '9') // Define the character in between 0 to 9. If not, it returns False. */ return true; return false; } // here, precedence() function is used to define the precedence to the operator. int precedence(char op) { if(op == '+' || op == '-') /* it defines the lowest precedence */ return 1; if (op == '*' || op == '/') return 2; if(op == '^') /* exponent operator has the highest precedence * return 3; return 0; } /* The eqlOrhigher() function is used to check the higher or equal precedence of the two operato rs in infix expression. */ bool eqlOrhigher (char op1, char op2) { int p1 = precedence(op1); int p2 = precedence(op2); if (p1 == p2) { if (op1 == '^' ) return false; return true; } return (p1>p2 ? true : false); } /* string convert() function is used to convert the infix expression to the postfix expression of the Stack */ string convert(string infix) { stack <char> S; string postfix =""; char ch; S.push( '(' ); infix += ')'; for(int i = 0; i<infix.length(); i++) { ch = infix[i]; if(ch == ' ') continue; else if(ch == '(') S.push(ch); else if(IsOperand(ch)) postfix += ch; else if(IsOperator(ch)) { while(!S.empty() && eqlOrhigher(S.top(), ch)) { postfix += S.top(); S.pop(); } S.push(ch); } else if(ch == ')') { while(!S.empty() && S.top() != '(') { postfix += S.top(); S.pop(); } S.pop(); } } return postfix;
Write, Run & Share C++ code online using OneCompiler's C++ online compiler for free. It's one of the robust, feature-rich online compilers for C++ language, running on the latest version 17. Getting started with the OneCompiler's C++ compiler is simple and pretty fast. The editor shows sample boilerplate code when you choose language as C++
and start coding!
OneCompiler's C++ online compiler supports stdin and users can give inputs to programs using the STDIN textbox under the I/O tab. Following is a sample program which takes name as input and print your name with hello.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name;
cout << "Enter name:";
getline (cin, name);
cout << "Hello " << name;
return 0;
}
C++ is a widely used middle-level programming language.
When ever you want to perform a set of operations based on a condition If-Else is used.
if(conditional-expression) {
//code
}
else {
//code
}
You can also use if-else for nested Ifs and If-Else-If ladder when multiple conditions are to be performed on a single variable.
Switch is an alternative to If-Else-If ladder.
switch(conditional-expression){
case value1:
// code
break; // optional
case value2:
// code
break; // optional
......
default:
code to be executed when all the above cases are not matched;
}
For loop is used to iterate a set of statements based on a condition.
for(Initialization; Condition; Increment/decrement){
//code
}
While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.
while (condition) {
// code
}
Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.
do {
// code
} while (condition);
Function is a sub-routine which contains set of statements. Usually functions are written when multiple calls are required to same set of statements which increases re-usuability and modularity. Function gets run only when it is called.
return_type function_name(parameters);
function_name (parameters)
return_type function_name(parameters) {
// code
}