Sabtu, 19 Juli 2025

Pemrograman C++ BAB VIII

 CONTOH 1 : ANTRIAN

#include <iostream>

#include <conio>



class queue

{

    public:

       int *antrian;

       int ukuran;

       int top;

       void insert(int i);

       void pop();

       void find(int i);

       void display();


    queue(int i) //// constructor

    {

       ukuran=i;

       antrian=new int[ukuran];

       top=0;

    }


    private:

    int isempty();

    int fully();

};


int queue::isempty()

{

   if(top<=0)

     return 1;

   else

     return 0;

}


int queue::fully()

{

   if(top>=ukuran)

     return 1;

   else

     return 0;

}


void queue::insert(int i)

{

  if(fully()==1)

  {

    cout<<"maaf antrian penuh"<<endl;

  }else

  {

    cout<<"nilai "<<i<<" masuk antrian"<<endl;

    antrian[top++]=i;

  }

}


void queue::pop()

{

   if(isempty()==1)

   {

     cout<<"maaf, antrian kosong"<<endl;

   }else

   {

     int pop=antrian[0];

     int i=1;

     cout<<"nilai "<<pop<<" keluar antrian"<<endl;

     while(i<top)

     {

       antrian[i-1]=antrian[i];

       i++;

     }

     top--;

   }

}


void queue::find(int i)

{

   int temp=0;

   int hasil=0;

   while(temp<top)

   {

      if(i==antrian[temp])

      {

         hasil=1;

         break;

      }

      temp++;

   }


   if(hasil==1)

   {

     cout<<"Nilai "<<i<<" ditemukan diantrian ke "<<(temp+1)<<endl;

   }else

   {

     cout<<"antrian tidak ditemukan"<<endl;

   }

}


void queue::display()

{

   cout<<"Isi antrian :"<<endl;

   int i=0;

   while(i<top)

   {

      cout<<"antrian ke :["<<(i+1)<<"] :"<<antrian[i]<<endl;

      i++;

   }

}


void main()

{

    int ukuran;

    char pilih;

    cout<<"Program queue/antrian"<<endl;

    cout<<endl;

    cout<<"Masukkan jumlah antrian :";

    cin>>ukuran;

    cout<<"Pilih program"<<endl;

    cout<<"1. Insert"<<endl;

    cout<<"2. pop"<<endl;

    cout<<"3. find"<<endl;

    cout<<"4. Display"<<endl;

    cout<<"5. Exit"<<endl;


    queue *q;

    q=new queue(ukuran);


    do

    {

        cout<<"Pilihan :";

        cin>>pilih;


        switch(pilih)

        {

            case '1':

                int c;

                cout<<"Masukkan angka :";

                cin>>c;

                q->insert(c);

                break;

            case '2':

              q->pop();

              break;

            case '3':

                int k;

                cout<<"Masukkan angka yang dicari :";

                cin>>k;

                q->find(k);

                break;

            case '4':

                q->display();

                break;

            default:

         cout<<"Angka yang anda masukkan salah atau anda telah keluar "<<endl;

        }

    }while(pilih!='5');

    delete q->antrian;

    getch();

}



=======================================

CONTOH 2 : ANTRIAN PRIORITAS

#include<iostream>

#include<conio>


class PQ

{

   public:

      int *priority;

      int ukuran;

      int top;

      void insert(int i);

      void pop();

      void display();


      PQ(int i)

      {

         ukuran=i;

         priority=new int[ukuran];

         top=0;

      }


      private:

       int isempty();

       int fully();

};


int PQ::isempty()

{

   if(top<=0)

      return 1;

   else

      return 0;

}


int PQ::fully()

{

   if(top>=ukuran)

       return 1;

   else

       return 0;

}


void PQ::pop()

{

   if(isempty()==1)

   {

     cout<<"maaf, antrian kosong"<<endl;

   }else

   {

     int pop=priority[0];

     int i=1;

     cout<<"nilai "<<pop<<" keluar antrian"<<endl;

     while(i<top)

     {

       priority[i-1]=priority[i];

       i++;

     }

     top--;

   }

}


void PQ::display()

{

   cout<<"Isi antrian :"<<endl;

   int i=0;

   while(i<top)

   {

      cout<<"antrian ke :["<<(i+1)<<"] :"<<priority[i]<<endl;

      i++;

   }

}



void PQ::insert(int k)

{

   if(fully()==1)

   {

      cout<<"maaf antrian berprioritas penuh"<<endl;

   }else

   {

    if(isempty()==1)

    {

       cout<<"nilai "<<k<<" masuk antrian"<<endl;

       priority[top++]=k;

    }else

    {

     int i;

     for(i=0;i<top;i++)

     {

            if(k<priority[i])

             {

               break;

             }

      }


      for(int j=top;j>i;j--)

      {

            priority[j]=priority[j-1];

      }

      priority[i]=k;

      top++;

     cout<<"nilai "<<k<<" masuk antrian"<<endl;

     }

   }

}



void main()

{

    int ukuran;

    char pilih;

    cout<<"Program priorty queue/antrian berprioritas"<<endl;

    cout<<endl;

    cout<<"Masukkan jumlah antrian :";

    cin>>ukuran;

    cout<<"Pilih program"<<endl;

    cout<<"1. Insert"<<endl;

    cout<<"2. pop"<<endl;

    cout<<"3. Display"<<endl;

    cout<<"4. Exit"<<endl;


    PQ *pq;

    pq=new PQ(ukuran);


    do

    {

        cout<<endl;

        cout<<"Pilihan :";

        cin>>pilih;


        switch(pilih)

        {


            case '1':

                int c;

                cout<<"Masukkan angka :";

                cin>>c;

                pq->insert(c);

                break;

            case '2':

                pq->pop();

                break;

            case '3':

                pq->display();

                break;

            default:

               cout<<"Angka yang anda masukkan salah atau anda telah keluar "<<endl;

        }

    }while(pilih!='4');

     delete pq->priority;

    getch();

}

============================

Tidak ada komentar: