52 lines
1.1 KiB
C
52 lines
1.1 KiB
C
|
#include <stdio.h>
|
||
|
#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;
|
||
|
}
|