#include #define MAX_SIZE 100 char stack[MAX_SIZE]; int top = -1; void push(char c) { if (top < MAX_SIZE - 1) { stack[++top] = c; } } char pop() { if (top >= 0) { return stack[top--]; } return '\0'; } int is_matching_pair(char opening, char closing) { return (opening == '(' && closing == ')') || (opening == '[' && closing == ']') || (opening == '{' && closing == '}'); } int are_parentheses_balanced(char expr[]) { int i; for (i = 0; expr[i] != '\0'; i++) { if (expr[i] == '(' || expr[i] == '[' || expr[i] == '{') { push(expr[i]); } else if (expr[i] == ')' || expr[i] == ']' || expr[i] == '}') { if (top == -1 || !is_matching_pair(pop(), expr[i])) { return 0; } } } return (top == -1); int main() { char expr[MAX_SIZE]; printf("Enter an expression: "); scanf("%s", expr); if (are_parentheses_balanced(expr)) { printf("Parentheses are balanced\n"); } else { printf("Parentheses are not balanced\n"); } return 0; }