# include<iostream.h>
# include<process.h>
# include<conio.h>
# define SIZE 20

class stack
{
int a[SIZE];
int tos; // Top of Stack
public:
	stack();
	void push(int);
	int pop();
	int isempty();
	int isfull();
};
stack::stack()
{
tos=0; //Initialize Top of Stack
}

int stack::isempty()
{
return (tos==0?1:0);
}
int stack::isfull()
{
return (tos==SIZE?1:0);
}

void stack::push(int i)
{
if(!isfull())
{
a[tos]=i;
tos++;
}
else
{
 cerr<<"Stack overflow error !
Possible Data Loss !";
}
}
int stack::pop()
{
if(!isempty())
{
return(a[--tos]);
}
else
{
cerr<<"Stack is empty! What to pop...!";
}
return 0;
}

void main()
{
stack s;
int ch=1,num;
while(ch!=0)
{
	cout<<"Stack Operations Mani Menu
1.Push
2.Pop
3.IsEmpty
4.IsFull
0.Exit

";
	cin>>ch;
	switch(ch)
	{
	case 0:
		exit(1); //Normal Termination of Program
	case 1:
		cout<<"Enter the number to push";
		cin>>num;
		s.push(num);
		break;
	case 2:
		cout<<"Number popped from the stack is: "<<s.pop()<<endl;
		break;
	case 3:
		(s.isempty())?(cout<<"Stack is empty.
"):(cout<<"Stack is not empty.
");
		break;
	case 4:
		(s.isfull())?(cout<<"Stack is full.
"):(cout<<"Stack is not full.
");
		break;
	default:
		cout<<"Illegal Option.
Please try again
";
	}
}//end of while
getch();
}

