dsl d26 code added
This commit is contained in:
parent
7d37851214
commit
d04b2f3753
192
assignment-26.cpp
Normal file
192
assignment-26.cpp
Normal file
@ -0,0 +1,192 @@
|
||||
#include<iostream>
|
||||
using namespace std;
|
||||
|
||||
class stack1
|
||||
{
|
||||
int top;
|
||||
char stack2[100];
|
||||
char infix[100];
|
||||
public:
|
||||
stack1()
|
||||
{
|
||||
top = -1;
|
||||
}
|
||||
void infix1();
|
||||
void check();
|
||||
int check1(char tkn);
|
||||
void push(int x);
|
||||
int pop();
|
||||
bool isEmpty();
|
||||
bool isFull();
|
||||
void display();
|
||||
};
|
||||
|
||||
bool stack1::isEmpty()
|
||||
{
|
||||
if(top == -1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool stack1::isFull()
|
||||
{
|
||||
if(top == 100 - 1)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void stack1::push(int x)
|
||||
{
|
||||
if(!isFull())
|
||||
{
|
||||
top++;
|
||||
stack2[top] = x;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<"Stack is full!!\n";
|
||||
}
|
||||
}
|
||||
|
||||
int stack1::pop()
|
||||
{
|
||||
int x;
|
||||
if(!isEmpty())
|
||||
{
|
||||
x = stack2[top];
|
||||
top--;
|
||||
return x;
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<"Stack is empty!!\n";
|
||||
}
|
||||
}
|
||||
|
||||
int stack1::check1(char tkn)
|
||||
{
|
||||
if(isEmpty())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if(stack2[top] == '(')
|
||||
{
|
||||
if(tkn == ')')
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if(stack2[top] == '{')
|
||||
{
|
||||
if(tkn == '}')
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
if(stack2[top] == '[')
|
||||
{
|
||||
if(tkn == ']')
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void stack1::check()
|
||||
{
|
||||
char tkn;
|
||||
int x = 0;
|
||||
for(int i = 0; infix[i]!='\0'; i++)
|
||||
{
|
||||
tkn = infix[i];
|
||||
if(tkn == '('||tkn == ')'||tkn == '['||tkn == ']'||tkn == '{'||tkn == '}')
|
||||
{
|
||||
if(tkn == '('||tkn == '['||tkn == '{')
|
||||
{
|
||||
push(tkn);
|
||||
}
|
||||
if(tkn == '}'||tkn == ']'||tkn == ')')
|
||||
{
|
||||
x = check1(tkn);
|
||||
if(x == 1)
|
||||
{
|
||||
pop();
|
||||
}
|
||||
else
|
||||
{
|
||||
push(tkn);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!isEmpty())
|
||||
{
|
||||
cout<<"Equation is not paranthesized!!\n";
|
||||
}
|
||||
else
|
||||
{
|
||||
cout<<"Equation is paranthesized!!\n";
|
||||
}
|
||||
}
|
||||
|
||||
void stack1::infix1()
|
||||
{
|
||||
cout<<"\nEnter infix expression(end expression with '#'): ";
|
||||
for(int i = 0; i < 100; i++)
|
||||
{
|
||||
cin>>infix[i];
|
||||
if(infix[i] == '#')
|
||||
{
|
||||
infix[i] = '\0';
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void stack1::display()
|
||||
{
|
||||
for(int i = 0; infix[i]!= '\0'; i++)
|
||||
{
|
||||
cout<<infix[i];
|
||||
}
|
||||
cout<<"\n";
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int ch = 0;
|
||||
do
|
||||
{
|
||||
stack1 obj;
|
||||
obj.infix1();
|
||||
obj.display();
|
||||
obj.check();
|
||||
cout<<"\nDO YOU WANT TO CHECK ANOTHER EXPRESSION?\n";
|
||||
cout<<"1. YES \n2. NO \n";
|
||||
cin>>ch;
|
||||
}while(ch == 1);
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user