Data structure (stack Implimentation) - Insurance Tips

A Hub of Best Guide Health Insurance Tips

Sunday, May 22, 2022

Data structure (stack Implimentation)

 

// PROJECT ON IMPLEMENTATION OF DATA STRUCTURES GRAPHICALLY.

# include<iostream.h>

# include<conio.h>

# include<graphics.h>

# include<dos.h>

# include<stdio.h>

# include<stdlib.h>

# include<ctype.h>

# include<math.h>

 

#define CH1 "1.STACK IMPLEMENTATION"

#define CH2       "2.STACK APPLICATION"

#define CH3       "3.QUEUE IMPLEMENTATION"

#define CH4       "4.LINK LIST IMPLEMENTATION"

#define CH5        "5.Exit    "

#define CH6 "Enter your choice  : "

#define CH(ch) ch==1?CH1:(ch==2?CH2:(ch==3?CH3:CHO(ch)))

#define CHO(ch) ch==4?CH4:CH5

 

#define S  "STACK IMPLEMENTATION"

#define S1 " 1. CREATE STACK "

#define S2 " 2. PUSH"

#define S3 " 3. POP "

#define S4 " 4. EXIT TO MAIN MENU"

#define C5 " Enter your choice  : "

#define C(ch) ch==1?C1:(ch==2?C2:(ch==3?C3:C4))

 

#define Q  "QUEUE IMPLEMENTATION"

#define Q1 " 1. CREATE QUEUE "

#define Q2 " 2. ADD ELEMENT "

#define Q3 " 3. DELETE ELEMENT "

#define Q4 " 4. EXIT TO MAIN MENU "

 

#define L1 "1.ADD A NODE AT BEGIN "

#define L2 "2.ADD A NODE AT END "

#define L3 "3.ADD A NODE IN BETWEEN"

#define L4 "4.DELETE A NODE"

#define L5 "5.EXIT TO MAIN MENU"

#define L6 "ENTER YOUR CHOICE"

#define L(ch) ch==1?L1:(ch==2?L2:(ch==3?L3:(ch==4?L4:L5)))

 

#define L1 "1.ADD A NODE AT BEGIN "

#define L2 "2.ADD A NODE AT END "

#define L3 "3.ADD A NODE IN BETWEEN"

#define L4 "4.DELETE A NODE"

#define L5 "5.EXIT TO MAIN MENU"

#define L6 "ENTER YOUR CHOICE"

#define L(ch) ch==1?L1:(ch==2?L2:(ch==3?L3:(ch==4?L4:L5)))

 

class list

{

    struct node{

      int data;

      struct node *link;

    };

    int size;

    typedef struct node *nodeptr;

    nodeptr head;

    public:

    list()

    {

                head=new node;

                head->link=NULL;

                outtextxy(8,390,"Head");

                line(44,393,69,393);

                line(64,388,69,393);

                line(64,398,69,393);

                outtextxy(73,390,"NULL");

                size=0;

    }

    nodeptr create();

   // list* getnode();

    void add();

    void add(int x);

    void add(char end);

    void del();

};

void list::add()

{

    if(size<5)

    {

    nodeptr new1;

    new1=new node;

    setcolor(10);

    rectangle(288,98,602,152);

    rectangle(290,100,600,150);

    gotoxy(39,8);

    cout<<"Enter the number to be added : ";

    cin>>new1->data;

    new1->link=head->link;

    head->link=new1;

    rectangle(70,285,150,335);

    line(130,285,130,335);

    gotoxy(12,20);

    cout<<new1->data;

    size++;

    delay(500);

    int area;

    char *buff;

    area=imagesize(70,365,525,416);

    buff=new char(area);

    getimage(70,365,525,416,buff);

    for(int j=70;j<170;)

    {

                putimage(j,365,buff,XOR_PUT);

                j++;

                putimage(j,365,buff,XOR_PUT);

                delay(5);

    }

 

 

    area=imagesize(70,285,150,335);

    buff=new char(area);

    getimage(70,285,150,335,buff);

    for(int i=285;i<=365;)

    {

                putimage(70,i,buff,XOR_PUT);

                i++;

                putimage(70,i,buff,XOR_PUT);

                delay(5);

    }

    int l;

    for(l=398,i=140,j=388;i<170;i++)

    {

                 putpixel(i,393,WHITE);

                 if(i>=164)

                 {

                     putpixel(i,j,WHITE);

                     j++;

                     putpixel(i,l,WHITE);

                     l--;

                 }

                 delay(50);

    }

    setcolor(BLACK);

    rectangle(288,98,602,152);

    rectangle(290,100,600,150);

    gotoxy(39,8);

    cout<<"                                          ";

    }

    else

    {

                 outtextxy(275,175,"Sorry you cannot add more nodes");

                 getch();

                 setcolor(BLACK);

                 outtextxy(275,175,"Sorry you cannot add more nodes");

                 setcolor(WHITE);

    }

}

void list::add(char end)

{

    if(size<5)

    {

    nodeptr new1;

    new1=new node;

    setcolor(10);

    rectangle(288,98,602,152);

    rectangle(290,100,600,150);

    gotoxy(39,8);

    cout<<"Enter the number to be added : ";

    cin>>new1->data;

    nodeptr temp=head;

    while(temp->link!=NULL)

                temp=temp->link;

    temp->link=new1;

    new1->link=NULL;

    rectangle(70+(size*100),285,150+(size*100),335);

    line(130+(size*100),285,130+(size*100),335);

    gotoxy(12+(size*12),20);

    cout<<new1->data;

    delay(1000);

    int area;

    char *buff;

    area=imagesize(70+(size*100),365,525,416);

    buff=new char(area);

    getimage(70+(size*100),365,525,416,buff);

    for(int j=70+(size*100);j<170+(size*100);)

    {

                putimage(j,365,buff,XOR_PUT);

                j++;

                putimage(j,365,buff,XOR_PUT);

                delay(5);

    }

 

    area=imagesize(70+(size*100),285,150+(size*100),335);

    buff=new char(area);

    getimage(70+(size*100),285,150+(size*100),335,buff);

    for(int i=285;i<=365;)

    {

                putimage(70+(size*100),i,buff,XOR_PUT);

                i++;

                putimage(70+(size*100),i,buff,XOR_PUT);

                delay(5);

    }

    int l;

    for(l=398,i=140+(size*100),j=388;i<170+(size*100);i++)

    {

                 putpixel(i,393,WHITE);

                 if(i>=164+(size*100))

                 {

                     putpixel(i,j,WHITE);

                     j++;

                     putpixel(i,l,WHITE);

                     l--;

                 }

                 delay(50);

    }

    size++;

    setcolor(BLACK);

    rectangle(288,98,602,152);

    rectangle(290,100,600,150);

    gotoxy(39,8);

    cout<<"                                          ";

    }

    else

    {

                 outtextxy(275,175,"Sorry you cannot add more nodes");

                 getch();

                 setcolor(BLACK);

                 outtextxy(275,175,"Sorry you cannot add more nodes");

                 setcolor(WHITE);

    }

}

 

 

void list::add(int x)

{

    if(size<5)

    {

      nodeptr new1;

      nodeptr temp=head;

      int s=0;

      while(temp!=NULL&&temp->data!=x)

      {        temp=temp->link;

                s++;

      }

      if(temp==NULL)

      {

                 outtextxy(275,175,"The number not found");

                 getch();

                 setcolor(BLACK);

                 outtextxy(275,175,"The number not found");

                 setcolor(WHITE);

      }

      else

      {

                new1=new node;

                setcolor(10);

                rectangle(288,98,602,152);

                rectangle(290,100,600,150);

                gotoxy(39,8);

                cout<<"Enter the number to be added : ";

                cin>>new1->data;

 

                new1->link=temp->link;

                temp->link=new1;

                rectangle(70+(s*100),285,150+(s*100),335);

                line(130+(s*100),285,130+(s*100),335);

                gotoxy(12+(s*12),20);

                cout<<new1->data;

                delay(1000);

                int area;

                char *buff;

                area=imagesize(70+(s*100),365,525,416);

                buff=new char(area);

                getimage(70+(s*100),365,525,416,buff);

                for(int j=70+(s*100);j<170+(s*100);)

                {

                                putimage(j,365,buff,XOR_PUT);

                                j++;

                                putimage(j,365,buff,XOR_PUT);

                                delay(5);

                }

 

                area=imagesize(70+(s*100),285,150+(s*100),335);

                buff=new char(area);

                getimage(70+(s*100),285,150+(s*100),335,buff);

                for(int i=285;i<=365;)

                {

                                putimage(70+(s*100),i,buff,XOR_PUT);

                                i++;

                                putimage(70+(s*100),i,buff,XOR_PUT);

                                delay(5);

                }

                int l;

                for(l=398,i=140+(s*100),j=388;i<170+(s*100);i++)

                {

                                putpixel(i,393,WHITE);

                                if(i>=164+(s*100))

                                {

                                                putpixel(i,j,WHITE);

                                                j++;

                                                putpixel(i,l,WHITE);

                                                l--;

                                }

                                delay(50);

                }

                size++;

                setcolor(BLACK);

                rectangle(288,98,602,152);

                rectangle(290,100,600,150);

                gotoxy(39,8);

                cout<<"                                          ";

      }

    }

    else

    {

                 outtextxy(275,175,"Sorry you cannot add more nodes");

                 getch();

                 setcolor(BLACK);

                 outtextxy(275,175,"Sorry you cannot add more nodes");

                 setcolor(WHITE);

    }

}

void list::del()

{

  if(head->link!=NULL)

  {

    nodeptr temp,temp1;

    temp=head;

    int s=0,x;

    setcolor(10);

    rectangle(288,98,602,152);

    rectangle(290,100,600,150);

    gotoxy(39,8);

    cout<<"Enter the number to be deleted : ";

    cin>>x;

 

 

    while(temp->link!=NULL&&temp->link->data!=x)

    {

                temp=temp->link;

                s++;

    }

    if(temp->link==NULL)

    {

                outtextxy(300,175,"The number not found");

                getch();

                setcolor(BLACK);

                outtextxy(300,175,"The number not found");

                setcolor(WHITE);

    }

    else

    {

                temp1=temp->link;

                temp->link=temp->link->link;

                //delete(temp1);

                int area=imagesize(70+(s*100),365,169+(s*100),416);

                char *buff;

                buff=new char(area);

                getimage(70+(s*100),365,169+(s*100),416,buff);

                putimage(70+(s*100),365,buff,XOR_PUT);

                area=imagesize(170+(s*100),365,610,416);

                buff=new char(area);

                getimage(170+(s*100),365,610,416,buff);

                for(int i=170+(s*100);i>170+(s*100)-100;)

                {

                    putimage(i,365,buff,XOR_PUT);

                    i--;

                    putimage(i,365,buff,XOR_PUT);

                    delay(5);

                }

                size--;

    }

    setcolor(BLACK);

    rectangle(288,98,602,152);

    rectangle(290,100,600,150);

    gotoxy(39,8);

    cout<<"                                         ";

 

  }

  else

  {

      outtextxy(300,175,"The list is empty");

      getch();

      setcolor(BLACK);

      outtextxy(300,175,"The list is empty");

      setcolor(WHITE);

  }

}

 

 

 

void funct1()

{

    //cleardevice();

    int gd,gm,maxx,maxy,x,y;

    detectgraph(&gd,&gm);

    initgraph(&gd,&gm,"c:\\tc\\");

    maxx=getmaxx();

    maxy=getmaxy();

    rectangle(0,0,maxx,maxy);

    int ch=1;

    list ptr;

    do

                {

                                x=0;

                                gotoxy(20,8);

                                settextstyle(10,0,2);

                                setcolor(9);

                                outtextxy(85,10,"Link List Implementation");

                                setcolor(10);

                                rectangle(0,0,maxx,maxy);

                                rectangle(2,2,maxx-2,maxy-2);

                                rectangle(40,60,250,230);

                                rectangle(38,58,252,232);

                                line(40,205,250,205);

                                setcolor(WHITE);

                                settextstyle(0,0,1);

                                outtextxy(50,75,L1);

                                outtextxy(50,100,L2);

                                outtextxy(50,125,L3);

                                outtextxy(50,150,L4);

                                outtextxy(50,175,L5);

                                outtextxy(50,213,L6);

                                gotoxy(29,14);

                                printf("%d",ch);

                                setcolor(BLUE);

                                outtextxy(50,50+(ch*25),L(ch));

                                while(x!=13)

                                {

                                                fflush(stdin);

                                                x=getch();

                                                sound(150);

                                                delay(25);

                                                nosound();

                                                setcolor(WHITE);

                                                outtextxy(50,50+(25*ch),L(ch));

                                                if(x==80)

                                                                ch=(ch==5?1:ch+1);

                                                else

                                                   if(x==72)

                                                                ch=(ch==1?5:ch-1);

                                                setcolor(BLUE);

                                                outtextxy(50,50+(25*ch),L(ch));

                                                gotoxy(29,14);

                                                printf("%d",ch);

                                }

                                setcolor(WHITE);

                                switch(ch)

                                {

                                                case 1:ptr.add();

                                                       break;

                                                case 2:ptr.add('e');

                                                       break;

                                                case 3:int x;

                                                       outtextxy(50,245,"Enter the number after which to insert:");

                                                       gotoxy(47,16);

                                                       cin>>x;

                                                       ptr.add(x);

                                                       gotoxy(5,16);

                                                       cout<<"                                               ";

                                                       break;

                                                case 4:ptr.del();

                                                       break;

                                }

                }while(ch!=5);

     //closegraph();

     //restorecrtmode();

}

//************************ Stack

class***************************************

class stack1

{

     int max,flag;

     protected:

                 float a[10];

                 int top;

     public:

     int create();

     void push1();

     void pop1();

     inline int is_full()

     {

                  if(top==max-1)

                      return(1);

                  else

                      return(0);

     }

     inline int is_empty()

     {

                  if(top==-1)

                       return(1);

                  else

                       return(0);

     }

};

// **** defination of member functions of stack1 ****

int stack1::create()

{

     gotoxy(5,17);

     setcolor(10);

     if(flag==1)

     {   setcolor(WHITE);

                 outtextxy(50,275,"Do you want to create new stack(Y/N)");

                 char c=getch();

                 setcolor(BLACK);

                 if((c=='y')||(c=='Y'))

                 {

                    outtextxy(50,275,"Do you want to create new stack(Y/N)");

                    rectangle(500,400-(30*max),575,400);

                    for(int i=1;i<max;i++)

                                line(500,400-(30*i),575,400-(30*i));

                    outtextxy(400,413-(top*30)-30,"STACK TOP ->    -1");

                    outtextxy(400,413,"STACK TOP ->    -1");

                    int area;

                    char *buff;

                    area=imagesize(510,15,565,30);

                    buff=new char[area];

                    for(;top>=0;top--)

                    {

                                getimage(510,375-(top*30),565,375-(top*30)+15,buff);

                                putimage(510,375-(top*30),buff,XOR_PUT);

                    }

                    delete(buff);

                  }

                  else

                  {

                    outtextxy(50,275,"Do you want to create new stack(Y/N)");

                    return(0);

                  }

 

     }

     setcolor(10);

     rectangle(40,260,350,300);

     rectangle(38,258,352,302);

     setcolor(WHITE);

     outtextxy(50,275,"Enter the size of stack :  _");

     outtextxy(60,285,"(maximum size 10)");

     gotoxy(34,18);

     cin>>max;

     //gotoxy(34,18);

     while(max>10)

     {

                  gotoxy(5,19);

                  outtextxy(50,315,"Please enter size upto 10 ");

                  gotoxy(34,18);

                  cout<<"    ";

                  gotoxy(34,18);

                  cin>>max;

     }

     flag=1;

     top=-1;

     setcolor(WHITE);

     for(int i=400-(30*max);i<=400;i++)

     {

                 putpixel(500,i,WHITE);

                 delay(5);

     }

     for(i=500;i<=575;i++)

     {

                 putpixel(i,400,WHITE);

                 delay(5);

     }

     for(i=400;i>=(400-(30*max));i--)

     {

                 putpixel(575,i,WHITE);

                 delay(5);

     }

     for(i=575;i>=500;i--)

     {

                 putpixel(i,400-(30*max),WHITE);

                 delay(5);

     }

     for( i=1;i<max;i++)

       for(int j=500;j<=575;j++)

       {

                 putpixel(j,400-(30*i),WHITE);

                 delay(5);

       }

     outtextxy(400,413,"STACK TOP ->    -1");

     setcolor(BLACK);

     rectangle(40,260,350,300);

     rectangle(38,258,352,302);

     outtextxy(50,275,"Enter the size of stack :  _");

     gotoxy(34,18);

     cout<<"      " ;

     outtextxy(60,285,"(maximum size 10)");

     outtextxy(50,315,"Please enter size upto 10 ");

     return(0);

}

void stack1::push1()

{

if(flag==1)

{

    if(is_full())

    {

                outtextxy(50,270,"Stack is full ");

                getch();

                setcolor(BLACK);

                outtextxy(50,270,"Stack is full ");

                setcolor(WHITE);

    }

    else

    {

     setcolor(10);

     rectangle(40,260,360,300);

     rectangle(38,258,362,302);

     setcolor(WHITE);

     outtextxy(50,275,"Enter the number to be pushed :");

     gotoxy(39,18);

     cin>>a[++top];

     int j=1;

     for(int i=500;i<575;i++)

     {

     putpixel(i,(400-(max*30)),BLACK);

     putpixel(575+j,(400-(max*30)),WHITE);

     j++;

     delay(20);

     }

     gotoxy(65,2);

     cout<<a[top];

     int area;

     char *buff;

     area=imagesize(510,15,565,30);

     buff=new char[area];

     getimage(510,15,565,30,buff);

     for(i=15;i<=375-(top*30);)

     {

                 putimage(510,i,buff,XOR_PUT);

                 i++;

                 putimage(510,i,buff,XOR_PUT);

                 delay(5);

     }

     delete(buff);

     for( i=575;i>=500;i--)

     {

     putpixel(575+j,(400-(max*30)),BLACK);

     putpixel(i,(400-(max*30)),WHITE);

     j--;

     delay(20);

     }

     area=imagesize(400,413,495,430);

     buff=new char(area);    //for stack ptr movement

     getimage(400,413-(top*30),495,430-(top*30),buff);

     for(i=413-(top*30);i>413-(top*30)-30;)

     {

                 putimage(400,i,buff,XOR_PUT);

                 i--;

                 putimage(400,i,buff,XOR_PUT);

                 delay(10);

     }

     setcolor(BLACK);

     rectangle(40,260,360,300);

     rectangle(38,258,362,302);

     outtextxy(50,275,"Enter the number to be pushed :");

     gotoxy(39,18);

     cout<<"        ";

     setcolor(WHITE);

     delete(buff);

    }

}

else

{

      outtextxy(50,270,"First create a stack");

      getch();

      setcolor(BLACK);

      outtextxy(50,270,"First create a stack");

      setcolor(WHITE);

}

} //********* end of push function **********

//******************** pop function ***********

void stack1::pop1()

{

    if(flag==1)

    {

                if(is_empty())

                {

                    outtextxy(50,270,"Stack is empty ");

                    getch();

                    setcolor(BLACK);

                    outtextxy(50,270,"Stack is empty ");

                    setcolor(WHITE);

                }

                else

                {

                    char *buff;

                    int area;

                    int j=1;

                    setcolor(10);

                    rectangle(40,260,360,300);

                    rectangle(38,258,362,302);

                    setcolor(WHITE);

                    outtextxy(50,275,"The poped element is :");

                    gotoxy(33,18);

                    cout<<a[top];

 

                    for(int i=500;i<575;i++)

                    {

                                putpixel(i,(400-(max*30)),BLACK);

                                putpixel(575+j,(400-(max*30)),WHITE);

                                j++;

                                delay(20);

                    }

                    area=imagesize(510,15,565,30);

                    buff=new char[area];

                    getimage(510,375-(top*30),565,375-(top*30)+15,buff);

 

                    for( i=375-(top*30);i>=0;)

                    {

                                putimage(510,i,buff,XOR_PUT);

                                i--;

                                putimage(510,i,buff,XOR_PUT);

                                delay(5);

                    }

                    delete(buff);

                    for( i=575;i>=500;i--)

                    {

                                putpixel(575+j,(400-(max*30)),BLACK);

                                putpixel(i,(400-(max*30)),WHITE);

                                j--;

                                delay(20);

                    }

                    area=imagesize(400,413,495,430);

                    buff=new char(area);    //for stack ptr movement

                    getimage(400,413-(top*30)-30,495,430-(top*30)-30,buff);

                    for(i=413-(top*30)-30;i<413-(top*30);)

                    {

                                putimage(400,i,buff,XOR_PUT);

                                i++;

                                putimage(400,i,buff,XOR_PUT);

                                delay(10);

                    }

                    delete(buff);

                    top--;

                    getch();

                    setcolor(BLACK);

                    rectangle(40,260,360,300);

                    rectangle(38,258,362,302);

                    outtextxy(50,275,"The poped element is :");

                    gotoxy(33,18);

                    cout<<"        ";

                }

    }

    else

    {

                outtextxy(50,270,"First create a stack");

                getch();

                setcolor(BLACK);

                outtextxy(50,270,"First create a stack");

                setcolor(WHITE);

    }

}

//**************** end of pop function *****************

class post:public stack1

{

    public:

    void create(int);

    void postfix(char *,char*);

    int isoperand(char);

    int prcd(char,char);

    void push(char);

    char pop();

};

void post :: create(int n)

{

    settextstyle(0,0,1);

    //cleardevice();

    rectangle(500,100,575,400);

    for(int i=1;i<n;i++)

                line(500,100+(i*30),575,100+(i*30));

    top=-1;

    outtextxy(450,415,"Top ->");

}

void post::push(char x)

{

    a[++top]=x;

    gotoxy(67,25-(top*2));

    cout<<x;

    setcolor(BLACK);

    outtextxy(450,415-(top*30),"Top ->");

    setcolor(WHITE);

    outtextxy(450,415-(top*30)-30,"Top ->");

    delay(2000);

}

char post::pop()

{

    setcolor(BLACK);

    gotoxy(67,25-(top*2));

    cout<<"  " ;

    outtextxy(450,415-(top*30)-30,"Top ->");

    setcolor(WHITE);

    outtextxy(450,415-(top*30),"Top ->");

    delay(2000);

    return(a[top--]);

}

int post::prcd(char op1,char op2)

{

     int a,b;

     switch(op1)

     {

                 case '$':a=4;break;

                 case '/':a=3;break;

                 case '*':a=2;break;

                 case '+':a=1;break;

                 case '-':a=1;break;

                 //case '(':a=0;break;

                 //default :a=-1;

     }

     switch(op2)

     {

                 case '$':b=4;break;

                 case '/':b=3;break;

                 case '*':b=2;break;

                 case '+':b=1;break;

                 case '-':b=1;break;

                 //case '(':b=0;

                 //default :b=-1;

     }

     if(op1=='(')

                 return(0);

     if(op2=='('&&op1!=')')

                 return(0);

     if(op2==')'&&op1!='(')

                 return(1);

     if(op1=='$'&&op2=='$')

                 return(0);

     if(a>=b)

                 return(1);

     else

                 return(0);

}

void post :: postfix(char infix[],char postr[])

{

    int i=1;

    int position,und;

    int outpos=0;

    char topsym,sym;

    create(10);

    for(position=0;(sym=infix[position])!='\0';position++)

    {

                 if(isdigit(sym))

                 {   postr[outpos++]=sym;

                     postr[outpos]='\0';

                     gotoxy(4,5+ ++i);

                     cout<<postr<<endl;

                 }

                 else

                 {

                     while(!is_empty()&&prcd(a[top],sym))

                     {

                                 topsym=pop();

                                 postr[outpos++]=topsym;

                                 postr[outpos]='\0';

                                 gotoxy(4,5+ ++i);

                                 cout<<postr<<endl;

                     }

                     //if(!is_empty())

                       //    push(topsym);

                     if(is_empty()||(sym!=')'))

                                push(sym);

                     else

                     {         topsym=pop();

                                delay(2000);   }

                  } //end of else

    }

    while(!is_empty())

    {          postr[outpos++]=pop();

                postr[outpos]='\0';

                gotoxy(4,5+ ++i);

                cout<<postr;

    }

    postr[outpos]='\0';

    delay(1000);

    return;

}// end of postfix

 

class evaluate : public post

{

    public:

    void push(float);

    float pop();

    float oper(int ,float ,float);

    float eval(char[]);

};

void evaluate:: push(float x)

{

    a[++top]=x;

    gotoxy(64,25-(top*2));

    cout<<x;

    setcolor(BLACK);

    outtextxy(450,415-(top*30),"Top ->");

    setcolor(WHITE);

    outtextxy(450,415-(top*30)-30,"Top ->");

    delay(2000);

}

float evaluate::pop()

{

    setcolor(BLACK);

    gotoxy(64,25-(top*2));

    cout<<"        " ;

    outtextxy(450,415-(top*30)-30,"Top ->");

    setcolor(WHITE);

    outtextxy(450,415-(top*30),"Top ->");

    delay(2000);

    return(a[top--]);

}

float evaluate::oper(int symb,float op1,float op2)

{

    switch(symb)

    {

                case '+':return(op1+op2);

                case '-':return(op1-op2);

                case '*':return(op1*op2);

                case '/':return(op1/op2);

                case '$':return(pow(op1,op2));

                default :cout<<"illegal operation" ;

                                 return(0);

    }

}

 

float evaluate::eval(char expr[])

{

    int c,position,i=1;

    float opnd1,opnd2,value;

    create(10);

    for(position=0;(c=expr[position])!='\0';position++)

                if(isdigit(c))

                   push(float(c-'0'));

                else

                {

                   opnd2=pop();

                   opnd1=pop();

                   gotoxy(3,6+ ++i);

                   cout<<opnd1;

                   delay(1000);

                   gotoxy(14,6+i);

                   cout<<opnd2;

                   delay(1000);

                   gotoxy(24,6+i);

                   cout<<(char)c;

                   value=oper(c,opnd1,opnd2);

                   gotoxy(34,6+i);

                   cout<<value;

                   push(value);

                }

    return(pop());

}

 

void funct3()

{

    cleardevice();

    post p;

    char infix[80],postr[80];

    int pos=0;

    setcolor(BLUE);

    settextstyle(10,0,2);

    outtextxy(150,25,"Application of Stack");

    rectangle(0,0,getmaxx(),getmaxy());

    rectangle(2,2,getmaxx()-2,getmaxy()-2);

    setcolor(WHITE);

    settextstyle(1,0,2);

    outtextxy(75,150,"Stack is used for conversion of infix expression

");

    outtextxy(75,175,"to postfix and to evaluate a postfix

expression");

    outtextxy(75,200,"You are required to enter an infix expression");

    outtextxy(75,225,"Note : You have to enter operands of single

digits");

    outtextxy(75,250,"       and use circular brackets rather than");

    outtextxy(75,275,"       square ones if needed");

    outtextxy(75,300,"       use $ for exponention operator");

    gotoxy(20,25);

    textcolor(YELLOW);

    cout<<"Press any key to continue ...." ;

    getch();

    cleardevice();

    setcolor(YELLOW);

    rectangle(0,0,getmaxx(),getmaxy());

    rectangle(2,2,getmaxx()-2,getmaxy()-2);

    setcolor(WHITE);

    gotoxy(4,2);

    textcolor(WHITE);

    cout<<"Enter the infix expression";

    gotoxy(4,3);

    while((infix[pos++]=getchar())!='\n')

    ;

    infix[--pos]='\0';

    gotoxy(4,4);

    cout<<"The original infix expression is :";

    gotoxy(4,5);

    cout<<infix;

    delay(500);

    gotoxy(4,25);

    cout<<"Executing..." ;

    setcolor(BLUE);

    outtextxy(450,50,"Conversion Stack");

    setcolor(WHITE);

    p.postfix(infix,postr);

    gotoxy(4,25);

    cout<<"             " ;

    gotoxy(4,22);

    cout<<"The  final postfix expression is :";

    gotoxy(4,23);

    cout<<postr;

    gotoxy(4,25);

    cout<<"Do you want to evaluate this expression(Y/N):";

    char ch=getch();

    evaluate e;

    if(ch=='Y'||ch=='y')

    {

                cleardevice();

                setcolor(YELLOW);

                rectangle(0,0,getmaxx(),getmaxy());

                rectangle(2,2,getmaxx()-2,getmaxy()-2);

                setcolor(BLUE);

                settextstyle(1,0,2);

                outtextxy(450,50,"Evaluation Stack");

                setcolor(WHITE);

                gotoxy(4,2);

                cout<<"The original infix expression was :";

                gotoxy(6,3);

                cout<<infix;

                gotoxy(4,4);

                cout<<"The postfix expression is :";

                gotoxy(6,5);

                cout<<postr;

                gotoxy(2,7);

                cout<<" Opnd1     Opnd2     operator       value";

                delay(1000);

                gotoxy(4,24);

                cout<<"Executing...";

                delay(100);

                float ans=e.eval(postr);

                gotoxy(4,24);cout<<"               ";

                gotoxy(4,20);

                cout<<"The final answer is : "<<ans;

                gotoxy(4,24);cout<<"Press any key to continue...";

                getch();

    }

}

 

//******************** Queue class

*******************************************

class queue1

{

    int a[10],front,rear,flag,max;

    public:

    void add();

    void del();

    int create();

    inline int isfull()

    {

                if(rear==max-1)

                    return(1);

                else

                    return(0);

    }

    inline int isempty()

    {

                if(rear==-1)

                    return(1);

                else

                    return(0);

    }

};

int queue1 :: create()    //for queue

{

     gotoxy(24,17);

     setcolor(10);

     if(flag==1)

     {   setcolor(WHITE);

                 outtextxy(50,275,"Do you want to create new queue(Y/N)");

                 char c=getch();

                 setcolor(BLACK);

                 if((c=='y')||(c=='Y'))

                 {

                    outtextxy(50,275,"Do you want to create new queue(Y/N)");

                    rectangle(50,355,50+(50*max),390);

                    for(int i=1;i<=max;i++)

                                line(50+(i*50),355,50+(i*50),390);

                    settextstyle(0,1,1);

                    outtextxy(30+(rear*50)+50,395,"rear ->");

                    outtextxy(53,395,"front ->");

                    settextstyle(0,0,1);

                    gotoxy(5,24);

                    cout<<"                                                        ";

                  }

                  else

                  {

                    outtextxy(50,275,"Do you want to create new queue(Y/N)");

                    return(0);

                  }

 

     }

     setcolor(10);

     rectangle(190,260,500,300);

     rectangle(188,258,502,302);

     setcolor(WHITE);

     outtextxy(200,275,"Enter the size of queue :  _");

     outtextxy(210,285,"(maximum size 10)");

     gotoxy(53,18);

     cin>>max;

     while(max>10)

     {

                  gotoxy(24,19);

                  outtextxy(200,315,"Please enter size upto 10 ");

                  gotoxy(53,18);

                  cout<<"    ";

                  gotoxy(53,18);

                  cin>>max;

     }

     flag=1;

     front=0;

     rear=-1;

     setcolor(WHITE);

     rectangle(50,355,50+(max*50),390);

     for(int i=1;i<=max;i++)

     {

     line(50+(i*50),355,50+(i*50),390);

     }

     settextstyle(0,1,1);

     outtextxy(53,395,"front ->");

     outtextxy(30,395,"rear ->");

     settextstyle(0,0,1);

     setcolor(BLACK);

     rectangle(190,260,500,300);

     rectangle(188,258,502,302);

     outtextxy(200,275,"Enter the size of queue :  _");

     gotoxy(53,18);

     cout<<"        ";

     outtextxy(210,285,"(maximum size 10)");

     outtextxy(200,315,"Please enter size upto 10 ");

     return(0);

}//  ********end of create ***********

void queue1::add()

{

if(flag==1)

{

    if(isfull())

    {

                outtextxy(200,270,"Queue is full ");

                getch();

                setcolor(BLACK);

                outtextxy(200,270,"Queue is full ");

                setcolor(WHITE);

    }

    else

    {

     setcolor(10);

     rectangle(190,260,510,300);

     rectangle(188,258,512,302);

     setcolor(WHITE);

     outtextxy(200,275,"Enter the number to

No comments:

Post a Comment