mirror of
https://hub.njuu.cf/TheAlgorithms/C-Plus-Plus.git
synced 2023-10-11 13:05:55 +08:00
66 lines
957 B
C++
66 lines
957 B
C++
#include<iostream>
|
|
#include<string>
|
|
|
|
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;
|
|
}
|