C++ Programming Blog

 
 
 
 #include<iostream.h>
 #include<graphics.h>
 #include<stdlib.h>
 #include<conio.h>
 #include<math.h>
 #include<dos.h>

 const max_length=10;

 class Queue
    {
       private:
        long queue[max_length];
        int flag[max_length];
        int rear;
        int front;

       public:
        Queue( );
        void Delete( );
        void Insert( );
        void waiting( );
        long get_value( );
        void show_main_screen( );
        void show_working( );
    };




 //--------------------------  Queue( )  ---------------------------------//


 void Queue::Queue( )
    {
       rear=-1;
       front=-1;

       for(int count=0;count<max_length;count++)
      {
         queue[count]=0;
         flag[count]=0;
      }
    }


 //----------------------  get_value( )  ---------------------------------//


 long Queue::get_value( )
    {
       int count=0;

       char String[10]={NULL};

       setcolor(11);
       settextstyle(2,0,7);
     outtextxy(40,250,\"Enter the element : \");
     outtextxy(41,250,\"Enter the element : \");

       do
      {
         int key_code=0;

         char key=NULL;

         if(kbhit( ))
        {
           key=getch( );
           key_code=int(key);
        }

         if( (count>0 && count<5) && key_code==13)
        break;

         else if( (key_code>=48 && key_code<=57 || key_code==46) &&
                                     count<4)
        {
           String[count]=key;

           count++;
        }

         else if(key_code==8 && count>0)
        {
           setfillstyle(10,6);
             bar(260,255,320,275);

           count--;
           String[count]=NULL;
        }

         setcolor(11);
         settextstyle(2,0,6);

         moveto(265,255);
           outtext(String);

         moveto(265,255);
           outtext(String);

         int x=getx( );
         int y=gety( )+9;

         while(!kbhit( ))
        {
           settextstyle(0,0,1);
             setcolor(15);
               moveto(x+2,y);
             outtext(\"_\");

           delay(250);

             setcolor(0);
               moveto(x+2,y);
             outtext(\"_\");

           delay(200);
           }
      }
       while(count<6);

       delay(500);

       setfillstyle(10,6);
     bar(35,255,320,275);

       long number=atol(String);

       return number;
    }


 //-------------------------------  Insert( )  ---------------------------//


 void Queue::Insert( )
    {
       long item=get_value( );

       if(rear==max_length-1)
      {
         setcolor(11);
         settextstyle(1,0,4);
           outtextxy(30,250,\"Queue is Full\");

         delay(1000);

         setfillstyle(10,6);
           bar(30,260,300,290);
      }

       else if(rear==-1 && front==-1)
      {
         rear++;
         queue[rear]=item;
         front=rear;
         flag[rear]=1;
      }

       else
      {
         rear++;
         queue[rear]=item;
         flag[rear]=1;
      }
    }


 //---------------------------  Delete( )  -------------------------------//


 void Queue::Delete( )
    {
       if(rear==-1 && front==-1)
      {
         setcolor(11);
         settextstyle(1,0,4);
           outtextxy(30,250,\"Queue is Empty\");

         delay(1000);

         setfillstyle(10,6);
           bar(30,260,300,290);
      }

       else
      {
         queue[front]=0;
         flag[front]=0;

         if(front==rear)
        front=rear=-1;

         else
        front++;
      }
    }


 //-----------------------  show_main_screen( )  -------------------------//


 void Queue::show_main_screen( )
    {
       for(int count_1=0;count_1<5;count_1++)
      {
         setcolor(7);
           rectangle(count_1,count_1,getmaxx( )-count_1,
                             getmaxy( )-count_1);
      }

       setfillstyle(10,6);
     bar(5,5,getmaxx( )-5,getmaxy( )-5);

       setfillstyle(1,7);
     bar(80,60,550,63);

       settextstyle(7,0,3);
     setcolor(8);
       outtextxy(108,12,\"Linear\");
       outtextxy(109,12,\"Linear\");

     setcolor(10);
       outtextxy(110,10,\"Linear\");
       outtextxy(111,10,\"Linear\");

       settextstyle(1,0,5);
     setcolor(8);
       outtextxy(78,17,\"Queue Implementation\");
       outtextxy(79,17,\"Queue Implementation\");

     setcolor(12);
       outtextxy(80,15,\"Queue Implementation\");
       outtextxy(81,15,\"Queue Implementation\");

       settextstyle(1,0,5);
     setcolor(8);
       outtextxy(418,382,\"Queue\");
       outtextxy(419,382,\"Queue\");

     setcolor(15);
       outtextxy(420,380,\"Queue\");
       outtextxy(421,380,\"Queue\");

       settextstyle(7,0,3);
     setcolor(8);
       outtextxy(448,377,\"Linear\");
       outtextxy(449,377,\"Linear\");

     setcolor(14);
       outtextxy(450,375,\"Linear\");
       outtextxy(451,375,\"Linear\");

       settextstyle(8,0,4);
     setcolor(8);
       outtextxy(18,82,\"Press :\");
       outtextxy(19,82,\"Press :\");

     setcolor(3);
       outtextxy(20,80,\"Press :\");
       outtextxy(21,80,\"Press :\");

       setfillstyle(2,9);
     bar(16,118,135,121);

       setcolor(14);
       settextstyle(2,0,6);
     outtextxy(50,130,\"<I> to Insert an element\");
     outtextxy(51,130,\"<I> to Insert an element\");

     outtextxy(50,150,\"<D> to Delete an element\");
     outtextxy(51,150,\"<D> to Delete an element\");

     outtextxy(50,170,\"<E> to Exit\");
     outtextxy(51,170,\"<E> to Exit\");

       setcolor(11);
     outtextxy(60,130,\"I\");
     outtextxy(61,130,\"I\");

     outtextxy(60,150,\"D\");
     outtextxy(61,150,\"D\");

     outtextxy(60,170,\"E\");
     outtextxy(61,170,\"E\");

       setcolor(7);
       settextstyle(0,0,1);
     outtextxy(430,452,\"* CopyRights (C) 2000-02\");
     outtextxy(430,465,\"* Muhammad Tahir Shahzad\");

       setcolor(15);
     rectangle(429,79,531,379);

       setfillstyle(1,0);
     bar(430,80,530,378);

       char string[10][10]={\"Queue[9]\",\"Queue[8]\",\"Queue[7]\",\"Queue[6]\",
                \"Queue[5]\",\"Queue[4]\",\"Queue[3]\",\"Queue[2]\",
                \"Queue[1]\",\"Queue[0]\"};

       for(int count_2=0;count_2<max_length;count_2++)
      {
         setcolor(15);
           line(429,79+(count_2*30),530,79+(count_2*30));

         setcolor(15);
         settextstyle(0,0,1);
           outtextxy(355,92+(count_2*30),string[count_2]);
      }
    }


 //-------------------------  show_working( )  ---------------------------//


 void Queue::show_working( )
    {
       show_main_screen( );

       int key_code=0;

       do
      {
         waiting( );

         char key=\'\\0\';

         key=getch( );
         key_code=int(key);

         if(key_code==105 || key_code==73)
        Insert( );

         else if(key_code==100 || key_code==68)
        Delete( );

         else if(key_code==27 || key_code==101)
        exit(0);

         setfillstyle(10,6);
           bar(540,80,615,400);

         for(int count_1=0;count_1<max_length;count_1++)
        {
           int flag=0;

           if(count_1==rear && flag==0)
              {
             setfillstyle(1,9);
               bar(550,358-(count_1*30),570,363-(count_1*30));

             setcolor(9);

             for(int count_2=0;count_2<=10;count_2++)
                   line(540,363-(count_1*30),550,
                        363-(count_1*30)-count_2);

             setcolor(7);
             settextstyle(0,0,1);
               outtextxy(577,357-(count_1*30),\"Rear\");

             flag=1;
              }

           flag=0;

           if(count_1==front && flag==0)
              {
             setfillstyle(1,11);
               bar(550,368-(count_1*30),570,373-(count_1*30));

             setcolor(11);

             for(int count_3=0;count_3<=10;count_3++)
                line(540,368-(count_1*30),550,
                          368-(count_1*30)+count_3);

             setcolor(7);
             settextstyle(0,0,1);
               outtextxy(577,369-(count_1*30),\"Front\");

             flag=1;
              }
        }

         delay(500);

         for(int count_4=0;count_4<max_length;count_4++)
        {
           if(flag[count_4]!=0)
              setfillstyle(1,count_4+1);

           else
              setfillstyle(1,0);

            bar(430,378-(count_4*30),530,350-(count_4*30));
        }

         for(int count_5=0;count_5<max_length;count_5++)
        {
           setcolor(15);
           settextstyle(0,0,1);

           char value[6]={\'\\0\'};

           itoa(queue[count_5],value,10);

           if(flag[count_5]!=0)
              outtextxy(460,360-(count_5*30),value);
        }
      }
       while(key_code!=27);
    }


 //----------------------------  waiting( )  -----------------------------//


 void Queue::waiting( )
    {
    do
       {
          setfillstyle(1,4);
        bar(51,440,99,445);

          setfillstyle(1,10);
        bar(101,440,149,445);

          setfillstyle(1,9);
        bar(151,440,199,445);

          setfillstyle(1,14);
        bar(201,440,249,445);

          delay(300);

          setfillstyle(10,6);
        bar(51,440,99,445);

          delay(150);

        bar(101,440,149,445);

          delay(150);

        bar(151,440,199,445);

          delay(150);

        bar(201,440,249,445);

          delay(150);

          setfillstyle(1,4);
        bar(51,440,99,445);

          delay(150);

          setfillstyle(1,10);
        bar(101,440,149,445);

          delay(150);

          setfillstyle(1,9);
        bar(151,440,199,445);

          delay(150);

          setfillstyle(1,14);
        bar(201,440,249,445);
       }
    while(!kbhit());

    setfillstyle(10,6);
      bar(51,440,99,445);
      bar(101,440,149,445);
      bar(151,440,199,445);
      bar(201,440,249,445);
   }

 main( )
    {
       int driver=VGA;
       int mode=VGAHI;

       initgraph(&driver,&mode,\"..\\\\Bgi\");

       Queue obj;

       obj.show_working( );

       closegraph( );
       return 0;
    }