Code:
#include<iostream.h>
#include<conio.h>
#include<string.h>
const int MAX=15;
class Stack
{
char array[MAX];
int top;
public:
Stack()
{
top=0;
}
void push(char a)
{
if (top<MAX)
{
array[top]=a;
top++;
}
}
char pop()
{
top--;
return array[top];
}
int isEmpty()
{
return top == 0;
}
};
class BracketChecker
{
char name[MAX];
Stack a;
unsigned int m_stack_count;
unsigned int m_angular_count;
unsigned int m_square_count;
unsigned int m_round_count;
public:
BracketChecker() : m_stack_count(0),
m_angular_count(0),
m_square_count(0),
m_round_count(0) {}
void input()
{
memset(name, 0, MAX);
cin>>name;
}
char* getinput()
{
return name;
}
int function()
{
for (int j = 0; j < strlen(name); j++)
{
switch (name[j])
{
case '{':
a.push(name[j]);
++m_angular_count;
break;
case '[':
a.push(name[j]);
++m_square_count;
break;
case '(':
a.push(name[j]);
++m_round_count;
break;
case '}':
a.pop();
--m_angular_count;
break;
case ']':
a.pop();
--m_square_count;
break;
case ')':
a.pop();
--m_round_count;
break;
}
}
return status();
}
int status()
{
int result = 0;
if (m_angular_count != 0 ||
m_square_count != 0 ||
m_round_count != 0)
result = 1;
return result;
}
};
int main()
{
clrscr();
BracketChecker b;
b.input();
b.function();
int status = b.status();
if (status == 1)
cout<<"Valid\n";
else
cout<<"Invalid\n";
getch();
return 0;
}