#include #include using namespace std; #define MAX 100 // -------------- stack -------------- char stack[MAX]; int top = -1; void push(char ch){ stack[ ++top ] = ch; } char pop(){ return stack[ top-- ]; } // -------------- end stack ----------- char opening(char ch){ switch(ch){ case '}': return '{'; case ']': return '['; case ')': return '('; case '>': return '<'; } } int main(){ string exp; int valid = 1, i = 0; cout<<"Enter The Expression : "; cin >> exp; while (valid == 1 && i < exp.length()){ if (exp[i] == '(' || exp[i] == '{' || exp[i] == '[' || exp[i] == '<'){ push(exp[i]); } else if (top >= 0 && stack[top] == opening(exp[i])){ pop(); } else{ valid = 0; } i++; } // makes sure the stack is empty after processsing (above) if (valid == 1 && top == -1){ cout<<"\nCorrect Expression"; } else{ cout<<"\nWrong Expression"; } return 0; }