Sabtu, 19 Juli 2025

Pemrograman C++ BAB X

 PROGRAM BST 

#include <iostream>

#include <conio>


class tree

{

   public:

         int value;

         tree *left;

         tree *right;

         tree *parent;


   tree(int v)

   {

      value=v;

      left=NULL;

      right=NULL;

   }


   tree()

   {

   }

};


tree *root;


class BST

{

public:


   BST()

   {

    root=NULL;

   }


   void cekroot();

   int isempty();

   void insert(int i);

   void searching(int i);

   void deletion(int i);

   void findmin();

   void findmax();

   void urut();

   void display(tree *val, int i);


     private:

        void insertx(int i, tree *temp);

        void uruttree(tree *n);

        void transplanted(tree *del, tree *reply);

        void minvalue(tree *n);

};


   int BST::isempty()

   {

      if(root==NULL)

      return 1;

      else

      return 0;

   }


   void BST::findmin()

   {

       tree *temp;

       temp=root;

      if(isempty()==1)

      {

      cout<<"No Data"<<endl;

      }else

      {

          while((temp->left!=NULL))

          {

           temp=temp->left;

          }

      cout<<"Nilai terkecil adalah :"<<temp->value<<endl;

      cout<<endl;

      }

   }


      void BST::findmax()

   {

      tree *temp;

      temp=root;

      if(isempty()==1)

      {

      cout<<"No Data"<<endl;

      }else

      {

        while(temp->right!=NULL)

       {

      temp=temp->right;

       }

      cout<<"Nilai terbesar adalah :"<<temp->value<<endl;

      cout<<endl;

      }

   }


   void BST::searching(int i)

   {

      tree *temp;

      temp=root;

      int n=0;


      while(temp!=NULL)

      {

          if(temp->value==i)

           {

                  n=1;

                  break;

           }


           if(i<(temp->value))

           {

                temp=temp->left;

           }else

           {

                 temp=temp->right;

           }

      }


      if(n==1)

        cout<<"data ditemukan"<<endl;

      else

                   cout<<"data tidak ditemukan"<<endl;

   }


void BST::urut()

{

  tree *temp;

        temp=root; //// penugasan variabel temp sebagai root.

         uruttree(temp); /// pemanggilan fungsi utama untuk pengurutan.


}



void BST::uruttree(tree *temp)

{

if(temp!=NULL)

       {

           uruttree(temp->left);

            cout<<"value :"<<temp->value<<endl;

     uruttree(temp->right);

       }

}


void BST::insert(int i)

   {

    tree *temp=new tree();

       temp=root;

       if(root==NULL)

       {

            root=new tree(i);

           cout<<"nilai "<<i<<" menjadi root"<<endl;

       }else

       {

        insertx(i,temp);

       }

     }


        void BST::insertx(int i,tree *temp)

   {

        tree *kiri=new tree();

        tree *kanan=new tree();


         if(i<=(temp->value))

         {

                kiri=temp;

                if(kiri->left!=NULL)

                {

               insertx(i,kiri->left);

                }else

                {

               kiri->left=new tree(i);

                 cout<<"nilai "<<i<<" masuk ke sebelah kiri "<<(kiri->value)<<endl;

                  kiri->left->left=NULL;

                  kiri->left->right=NULL;

                }

         }else

         {

              kanan=temp;

              if(kanan->right!=NULL)

              {

              insertx(i,kanan->right);

              }else

              {

              kanan->right=new tree(i);

                cout<<"nilai "<<i<<" masuk ke sebelah kanan "<<(kanan->value)<<endl;

                 kanan->right->left=NULL;

                 kanan->right->right=NULL;

            }

         }

   }


      void BST::transplanted(tree *del, tree *reply)

   {

    if(del->parent==NULL)

       {

            root=reply;

       }else if(del==del->parent->left)

       {

            del->parent->left=reply;

       }else

       {

    del->parent->right=reply;

       }


       if(reply!=NULL)

       {

            reply->parent=del->parent;

       }

   }


   void BST::minvalue(tree *temp)

   {

        while(temp->left!=NULL)

        {

           temp=temp->left;

        }

        //temp;

   }



   void BST::deletion(int i)

   {

  tree *y=NULL;

       tree *x;

       x=root;


         while((x!=NULL)&&(x->value!=i))

         {

             y=x;

             if(i<x->value)

             {

              x=x->left;

             }else

             {

              x=x->right;

             }

         }


         if(x==NULL)

         {

            cout<<"Nilai yang akan dihapus tidak ditemukan "<<endl;

         }else

         {

             x->parent=y;

            if(x->left==NULL)

            {

                 transplanted(x,x->right); /// case 2

            }else if(x->right==NULL)

            {

         transplanted(x,x->left); /// case 3

            }else

            {

            tree *min=x->right;

                min->parent=x;

       

tree *coba;

while(min->left!=NULL)

        {

              coba=min;

           min=min->left;

          }


                 tree *temp=min;

                    temp->parent=coba;


               if(x->right!=min)

               {

                  transplanted(min,min->right); /// case 4.b

                  temp->right=x->right;

                  temp->right->parent=temp;

                }

            transplanted(x,temp); /// case 4.a

                  temp->left=x->left;

                  temp->left->parent=temp;

            }


       }

   }


void BST::display(tree *disp,int i)

   {

    int k;

if(disp !=NULL)

      {

      display(disp->right,i+1);

         cout<<endl;


         if(disp==root)

          cout<<"root->: ";

         else

         {

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

            cout<<"     ";

         }


         cout<<disp->value;

         display(disp->left, i+1);

      }

   }




void main()

{

    BST *st;

    st=new BST();

    int n;

    char pilih;

    cout<<"Operasi BST "<<endl;

    cout<<"1. Input data"<<endl;

cout<<"2. cari data"<<endl;

cout<<"3. nilai terkecil"<<endl;

  cout<<"4. nilai terbesar"<<endl;

   cout<<"5. Urut Tree"<<endl;

cout<<"6. Hapus Node"<<endl;

   cout<<"7. Display"<<endl;

cout<<"8. Exit"<<endl;


    do{

           cout<<"Pilihan :";

             cin>>pilih;


             switch(pilih){

      case '1':

          cout<<"Masukkan angka :";

                  cin>>n;

                  st->insert(n);

          break;

          case '2':

          cout<<"Masukkan angka :";

                  cin>>n;

                  st->searching(n);

          break;

        case '3':

               st->findmin();

          break;

        case '4':

                  st->findmax();

          break;

         case '5':

               st->urut();

               break;

case '6':

          cout<<"Masukkan angka :";

                  cin>>n;

               st->deletion(n);

          break;

case '7':

          cout<<"Display BST :"<<endl;

               st->display(root,1);

               cout<<endl;

            break;

default:

          cout<<"salah pilih atau keluar";

                break;

          }

      } while(pilih!='8');

  getch();

}



Pemrograman C++ BAB IX

 CONTOH 1 : DOUBLE LINKED LIST

#include <iostream>

#include <conio>


class node

{

      public:

      int value;

      node *next;

      node *prev;             


   node(int val,node *n,node *p)

   {

      value=val;

      next=n;

      prev=p;

   }


   node(int v)

   {

      value=v;

   }


   node()

   {

   }

};


class double_list

{

  public:

      void inserthead(int value);

      void inserttail(int val);

      void insertbefore(int value,int pos);

      void removehead();

      void removetail();

      void removepost(int pos);

      void print();


      double_list()

      {

         head=NULL;

         tail=NULL;

      }

      private:

         node *head;

         node *tail;

         node *current;

         int isempty();

};

static int list=0;


int double_list::isempty()

{

    if(head==NULL || tail==NULL)

        return 1;

    else

        return 0;

}


void double_list::inserthead(int val)

{

   if(isempty()==1)

   {

      current=new node(val);

      head=current;

      tail=current;

      tail->next=NULL;

      head->prev=NULL;

   }else

   {

      current=new node();

      current->next=this->head;

      this->head->prev=current;

      current->value=val;

      this->head=current;

   }

   list++;

}


void double_list::inserttail(int val)

{

   if(isempty()==1)

   {

      current=new node(val);

      head=current;

      tail=current;

      tail->next=NULL;

   }else

   {

      current=new node();

      current->prev=this->tail;

      this->tail->next=current;

      current->value=val;

      this->tail=current;

      current->next=NULL;

   }

   list++;

}


void double_list::removehead()

{

   if(isempty()==1)

        cout<<"Maaf, linked list kosong"<<endl;

   else

   {

     if(list==1)

     {

        cout<<"nilai "<<head->value<<" Telah dihapus"<<endl;

        tail=NULL;

        head=NULL;

     }else

     {

       int temp=head->value;

       current=head->next;

       head=current->prev;

       current->prev->next=current;

       head=current;

       cout<<"nilai "<<temp<<" Telah dihapus"<<endl;

     }

     list--;

   }

}


void double_list::removetail()

{

   if(isempty()==1)

         cout<<"Maaf, linked list kosong"<<endl;

   else

   {

     if(list==1)

     {

         cout<<"nilai "<<tail->value<<" Telah dihapus"<<endl;

         tail=NULL;

         head=NULL;

         list--;

     }else

     {

      int temp=tail->value;

      current=tail;

      current=current->prev;

      tail->prev->next=NULL;

      tail=current;

      cout<<"nilai "<<temp<<" Telah dihapus"<<endl;

      list--;

       }

   }

}


void double_list::insertbefore(int value, int pos)

{

   if(isempty()==1)

      cout<<"Maaf, linked list kosong"<<endl;

   else

   {

     if(pos>list)

       cout<<"jumlah list terlalu sedikit"<<endl;

     else

     {

      if(pos==1)

      {

         inserthead(value);

      }else if(pos==list)

      {

         inserttail(value);

      }else

      {

         current=head;

         node *fixed;

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

         {

      current=current->next;

        }

         fixed=new node((value),current,current->prev);

         current->prev->next=fixed;

         current->prev=fixed;

         current=fixed;

         list++;

      }

      }

    }

}


void double_list::removepost(int pos)

{

   if(isempty()==1)

        cout<<"Maaf, linked list kosong"<<endl;

   else

   {

      if(pos>list)

         cout<<"Maaf, Range terlalu sedikit"<<endl;

      else

      {

         if(pos==1)

              removehead();

         else if(pos==list)

          removetail();

         else

         {

          current=head;

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

              {

                current=current->next;

              }

            int nilai=current->value;

            current->prev->next=current->next;

            current->next->prev=current->prev;

            cout<<"Nilai "<<nilai<<" Dihapus dari linked list"<<endl;

             list--;

          }

      }

   }

}


void double_list::print()

{

   current=head;

   while(current!=NULL)

   {

       cout<<"Isi list :"<<current->value<<endl;

       current=current->next;

   }

}




void main()

{

int n,pos;

   double_list *st;

   st=new double_list();


   char pilih;

   cout<<"Operasi linkedlist "<<endl;

   cout<<"1. insertHead"<<endl;

   cout<<"2. insertTail"<<endl;

   cout<<"3. removeHead"<<endl;

   cout<<"4. removeTail"<<endl;

   cout<<"5. insert before"<<endl;

   cout<<"6. Remove position"<<endl;

   cout<<"7. Exit"<<endl;


   do{

       cout<<endl;

       cout<<"Pilihan :";

       cin>>pilih;


      switch(pilih)

      {

           case '1':

                 cout<<"masukkan data :";

         cin>>n;

                   st->inserthead(n);

                   st->print();

             break;


       case '2':

                  cout<<"masukkan data :";

                  cin>>n;

                  st->inserttail(n);

                  st->print();

          break;


          case '3':

                  st->removehead();

                  st->print();

              break;


         case '4':

                  st->removetail();

                  st->print();

              break;



         case '5':

                  cout<<"masukkan data :";

                  cin>>n;

                  cout<<"masukkan posisi :";

                  cin>>pos;

                  st->insertbefore(n,pos);

                  st->print();

              break;


         case '6':

                 int pos;

                 cout<<"Masukkan posisi angka yang ingin dihapus :";

                 cin>>pos;

                 st->removepost(pos);

                 st->print();

                 break;


         case '7':

             cout<<"terima kasih :";

                 break;

          default:

                cout<<"salah pilih";

                break;


      }

   } while(pilih!='7');

   getch();

}

=============================================
CONTOH 2 : LINKED LIST
#include <iostream>
#include <conio>
#include <cstring>


class node
{
public:
      int value;
      node *next;

   node(int va, node *n)
   {
     value=va;
      next=n;
   }

   node()
   {
   }
};

class dlist
{
     public:
         void insert(int value);
         void remove();
         void insertbefore(int value, int pos);
         void print();
         int isempty();

      dlist()
      {
      head=NULL;
      }

      private:
        node *head;
};
static int list=0;


int dlist::isempty()
{
   if(this->head==NULL)
    return 1;
   else
    return 0;
}

void dlist::insert(int val)
{
node *newnode;
   newnode=new node();

   if(isempty()==1)
   {
    this->head=newnode;
      newnode->value=val;
      newnode->next=NULL;
   }else
   {
    newnode->next=this->head;
      newnode->value=val;
      this->head=newnode;
   }
   list++;
}


void dlist::remove()
{
if(isempty()==1)
    cout<<"Maaf, linked list kosong"<<endl;
   else
    this->head=this->head->next;
   list--;
}

void dlist::insertbefore(int value, int pos)
{
   if(isempty()==1)
    cout<<"Maaf, linked list kosong"<<endl;
   else
   {
     if((pos>=list) || pos==1)
       cout<<"jumlah list terlalu sedikit atau list yang salah"<<endl;
     else
     {
        node *newnode=head;
           node *fixed;
        for(int i=1;i<pos-1;i++)
          {
      newnode=newnode->next;
    }
           fixed=new node((value),newnode->next);
           newnode->next=fixed;
           list++;
     }
   }
}

void dlist::print()
{
node *newnode=head;

   while(newnode!=NULL)
   {
    cout<<"Isi list :"<<newnode->value<<endl;
      newnode=newnode->next;
   }
}

void main()
{
int n;
   dlist *st;
   st=new dlist();

   char pilih;
   cout<<"Operasi linkedlist "<<endl;
   cout<<"1. insert"<<endl;
   cout<<"2. remove"<<endl;
   cout<<"3. insert before"<<endl;
   cout<<"4. Exit"<<endl;

   do{
    cout<<endl;
    cout<<"Pilihan :";
      cin>>pilih;

      switch(pilih)
      {
         case '1':
                cout<<"masukkan data :";
                  cin>>n;
                  st->insert(n);
                  st->print();
                break;
         case '2':
            char n;
            cout<<"Anda yakin untuk menghapus ? y/n ";
                  cin>>n;
                  if(n=='y')
                  {
                     st->remove();
                     st->print();
                  }else
                  {
                      cout<<"Thanks";
                  }
                  break;
         case '3':
         int pos;
                  cout<<"masukkan data :";
                  cin>>n;
                  cin.get();
                  cout<<"masukkan posisi:";
                  cin>>pos;
                  st->insertbefore(n,pos);
                  st->print();
              break;
         case '4':
          cout<<"terima kasih :";
                  break;
         default:

          cout<<"salah pilih";
                  break;
      }
   } while(pilih!='4');
 getch();
}
======================================================
CONTOH 3 : LINKED LIST WITH TAIL
#include <iostream>
#include <conio>

class node
{
    public:
      int value;
      node *next;

   node(int  va, node *n)
   {
    value=va;
      next=n;
   }

   node(int  a)
   {
    value=a;
   }
};


class dlistx
{
      public:
      void inserthead(int val);
      void removehead();
      void insertlast(int val);
      void removelast();
      void print();
      int isempty();

      dlistx()
      {
         head=NULL;
         tail=NULL;
      }

      private:
         node *head;
         node *tail;
};

static int list=0;

int dlistx::isempty()
{
if(this->head==NULL || this->tail==NULL)
    return 1;
   else
    return 0;
}

void dlistx::inserthead(int value)
{
   if(isempty()==1)
   {
      node *temp;
      temp=new node(value);
      this->head=temp;
      this->tail=temp;
      this->tail->next=NULL;
      cout<<"Nilai "<<value<<" masuk ke head"<<endl;
      cout<<endl;
   }else
   {
      node *temp;
      temp=new node(value,this->head);
      this->head=temp;
      cout<<"Nilai "<<value<<" masuk ke head"<<endl;
      cout<<endl;
   }
   list++;
}


void dlistx::insertlast(int value)
{
   if(isempty()==1)
   {
      node *temp;
      temp=new node(value);
      this->head=temp;
      this->tail=temp;
      this->tail->next=NULL;
      cout<<"Nilai "<<value<<" masuk ke tail"<<endl;
      cout<<endl;
   }else
   {
      this->tail->next=new node(value);
      this->tail=this->tail->next;
      this->tail->next=NULL;
      cout<<"Nilai "<<value<<" masuk ke tail"<<endl;
      cout<<endl;
    }
list++;
}


void dlistx::removehead()
{
   if(isempty()==1)
        cout<<"Maaf, linked list kosong"<<endl;
   else
        this->head=this->head->next;
   list--;
}


void dlistx::removelast()
{
   if(isempty()==1)
   {
        cout<<"Maaf, linked list kosong"<<endl;
   }else
   {
        int x=tail->value;
        if(list==1)
        {
          cout<<"nilai "<<x<<" Telah dihapus"<<endl;
          tail=NULL;
          head=NULL;
           list--;
        }else
        {
          node *temp;
          temp=this->head;
          for(int i=1;i<list-1;i++)
          {
             temp=temp->next;
          }
      temp->next=temp->next->next;
    this->tail=temp;
          cout<<"nilai "<<x<<" Telah dihapus"<<endl;
          list--;
       }
    }
}


void dlistx::print()
{
   node *newnode=head;
   while(newnode!=NULL)
   {
      cout<<"Isi list :"<<newnode->value<<endl;
      newnode=newnode->next;
   }
}


void main()
{
   int n;
   dlistx *st;
   st=new dlistx();

   char pilih;
   cout<<"Operasi linkedlist "<<endl;
   cout<<"1. insert"<<endl;
   cout<<"2. remove"<<endl;
   cout<<"3. insert last"<<endl;
   cout<<"4. remove last"<<endl;
   cout<<"5. Exit"<<endl;

   do{
    cout<<endl;
    cout<<"Pilihan :";
        cin>>pilih;

            switch(pilih)
            {
               case '1':
                  cout<<"masukkan data :";
                  cin>>n;
                  st->inserthead(n);
                  st->print();
          break;

                  case '2':
          char n;
          cout<<"Anda yakin untuk menghapus ? y/n ";
                  cin>>n;
                  if(n=='y')
                  {
                      st->removehead();
                      st->print();
                    }else
                    {
                     cout<<"Thanks";
                    }
                  break;

                  case '3':
          int pos;
                  cout<<"masukkan data :";
                  cin>>pos;
                  st->insertlast(pos);
                  st->print();
          break;

          case '4':
          char k;
          cout<<"Anda yakin untuk menghapus ? y/n ";
                  cin>>k;
                  if(k=='y')
                  {
                      st->removelast();
                        st->print();
                     }else
                     {
                      cout<<"Thanks";
                     }
                       break;

           case '5':
          cout<<"terima kasih :";
                    break;
                 default:
          cout<<"salah pilih";
                break;
              }
    } while(pilih!='5');

   getch();
}
====================================================

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();

}

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

Pemrograman C++ BAB VII

 CONTOH 1 : SORTING SEARCHING

#include <iostream>

#include <conio>



class bubble

{

       public:

       int* process(int *arr, int ukuran)

       {


while(ukuran>0)

             {

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

                 {

              if(arr[i-1]>arr[i])

                    {

                        int temp=arr[i-1];

              arr[i-1]=arr[i];

                          arr[i]=temp;

 }

             }

        ukuran--;

         }

       return arr;

     }

};


class insertion

{

public:

  int* process(int *arr, int ukuran)

  {

   int max,j;

   int i=1;


     while(i<ukuran)

     {

    max=arr[i];

           for(j=i;j>0;j--)

           {

      if(max<arr[j-1])

                arr[j]=arr[j-1];

             else

            break;

            }

         arr[j]=max;

         i++;

   }

     return arr;

  }

};



class radix

    {

 public:

 int cekbit(int arr, int pos)

 {

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

    {

  arr=arr/2;

    }


    return arr%2;

 }


 int* process(int *arr, int ukuran)

 {

int bit;

cout<<"masukkan jumlah bit yang diinginkan ";

       cin>>bit;

  int s;

       int *kembar;

       kembar=new int[ukuran];

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

       {

         s=0;

           for(int k=0;k<=1;k++)

           {

               for(int j=0;j<ukuran;j++)

               {

          int x=cekbit(arr[j],i);

                    if(x==k)

                    {

                kembar[s]=arr[j];

                        s++;

                    }

               }

            }

               tukar(arr,kembar,ukuran);

               }

          return arr;

       }


       int* tukar(int *arr,int *kembar,int ukuran)

      {

         for(int i=0;i<ukuran;i++)

        {

    arr[i]=kembar[i];

     }

  return arr;

   }

};


class counting

{

   public:

   int* process(int *arr,int ukuran)

      {

      int i,j,k,min,max;

             int indeks=0;


         min=max=arr[0];

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

        {

          if(arr[i]<min)

          {

          min=arr[i];

          }


         if(arr[i]>max)

          {

            max=arr[i];

          }

        }


         k=max-min+1;

         /// membuat bucket

               int *B=new int[k];


         ///normalisasi nilai bucket

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

          B[i]=0;


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

             B[arr[i]-min]++;


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

         {

          for(j=0;j<B[i-min];j++)

            arr[indeks++]=i;

         }

         return arr;

      }

};


class sequencsearch

{

   int found;

   public:

      int sequence(int *arr,int find,int ukuran)

      {

         int hasil=0;

         for(int i=0;i<ukuran;i++)

         {

          if(find==arr[i])

            {

               hasil=1;

               found=i;

               break;

            }

         }


         return hasil;

      }


      int getfound()

      {

      return found;

      }

};


class binarysearch

{

     int found;

     public:

     int binary(int *arr,int find,int ukuran)

     {

        int high=ukuran-1;

         int low=0;

         int hasil=0;

         while(low<=high)

         {

             int mid=(high+low)/2;


            if(find==arr[mid])

            {

                found=mid;

                hasil=1;

                break;

            }else if(find>arr[mid])

            low=mid+1;

            else

            high=mid-1;

         }

         return hasil;

     }


   int getfound()

   {

    return found;

   }

};




class utama

{

   public:

     void insert();

     void baca();

     void pengurutan();

     void pencarian(int cari);


   utama(int n)

   {

    ukuran=n;

    arr=new int[ukuran];

   }


   private:

      int *arr;

      int ukuran;

      bubble a;

      insertion b;

      radix c;

      counting d;

      sequencsearch e;

      binarysearch f;


};


void utama::insert()

{

  for(int i=0;i<ukuran;i++)

   {

    cout<<"Nilai ke "<<(i+1)<<":";

      cin>>arr[i];

   }

}


void utama::baca()

{

cout<<"baca isi array :"<<endl;

   for(int i=0;i<ukuran;i++)

   {

    cout<<"Isi Array ke "<<(i+1)<<": "<<arr[i]<<endl;

   }

   cout<<endl;

}


void utama::pengurutan()

{

   char n;

   cout<<"Silahkan Pilih Teknik Pengurutan yang diinginkan"<<endl;

   cout<<"1. Bubble sort"<<endl;

   cout<<"2. Insertion sort"<<endl;

   cout<<"3. radix sort"<<endl;

   cout<<"4. counting sort"<<endl;

   cout<<"Masukkan teknik pengurutan yang diinginkan :";

   cin>>n;


   switch(n)

   {

      case '1':

          arr=a.process(arr,ukuran);

          break;

      case '2':

          arr=b.process(arr,ukuran);

          break;

      case '3':

         arr=c.process(arr,ukuran);

         break;

      case '4':

         arr=d.process(arr,ukuran);

         break;

      default:

         cout<<"Pilihan anda salah"<<endl;

   }


}


void utama::pencarian(int cari)

{

    int n,hasil,found;

    cout<<"Masukkan algoritma pencarian yang anda inginkan :"<<endl;

    cout<<"1.Sequencial Search"<<endl;

    cout<<"2.Binary Search"<<endl;

    cout<<"Pencarian :";

    cin>>n;


    if(n==1)

    {

      hasil=e.sequence(arr,cari,ukuran);

  found=e.getfound();

    }else if(n==2)

    {

        hasil=f.binary(arr,cari,ukuran);

         found=f.getfound();

    }else

    {

    cout<<"angka yang anda masukkan salah "<<endl;

    }


    if(hasil==1)

    {

    cout<<"nilai "<<cari<<" ditemukan pada index ke "<<(found+1)<<endl;

    }else

    {

    cout<<"Angka tidak ditemukan"<<endl;

    }


    delete arr;


}


void main()

{

      int ukuran,nilai;

      cout<<"Program Pencarian dan Pengurutan :"<<endl;

      cout<<endl;

      cout<<"Masukkan jumlah array yang diinputkan :";

      cin>>ukuran;


      utama a(ukuran);    /// inisialisasi obyek a dari class utama

               a.insert();

           a.baca();

                   a.pengurutan();

                   a.baca();



      cout<<"apakah anda ingin melakukan pencarian "<<endl;

      cout<<"Jika iya masukkan angka, jika tidak tekan -88 :"<<endl;

      cin>>nilai;


      if(nilai!=-88)

      {

               a.pencarian(nilai);

      }else

      {

      cout<<"Thanks and bye-bye"<<endl;

      }

      getch();

}


Pemrograman C++ BAB VI

 CONTOH 1 : ABSTRACTION

#include <iostream>

#include <conio>

#include <string>

#include <cstring>


class manusia

{

   public: virtual void datadiri(string nama, string alamat)=0;

   public: void sifat()

   {

       cout<<"Sifat Manusia itu adalah suka bekerja sama";

   }

};


class pekerjaan : public manusia

{

   public:

   void datadiri(string n,string a)

   {

       nama=n;

       alamat=a;

   }

 void kerja(string tempat);

 void display();


   private:

     string nama,alamat,lokasi;

};


void pekerjaan::kerja(string k)

{

     lokasi=k;

}


void pekerjaan::display()

{

   cout<<"Nama saya :"<<nama<<endl;

   cout<<"Tempat Tinggal :"<<alamat<<endl;

   cout<<"Pekerjaan saya adalah :"<<lokasi<<endl;

}



void main()

{

   pekerjaan lis;

   string nama,alamat,pekerjaan;


      cout<<"Informasi data pribadi"<<endl;

      cout<<endl;

      cout<<"Masukkan nama anda :";

      getline(cin,nama);

      cout<<"Masukkan alamat anda :";

      getline(cin,alamat);

      cout<<"Masukkan pekerjaan anda :";

      cin>>pekerjaan;


      cout<<endl;

      lis.datadiri(nama,alamat);

      lis.kerja(pekerjaan);

      lis.display();

      lis.sifat();

      getch();

}

=========================
CONTOH 2 : CLASS OBJECT
#include <iostream>
#include <conio>
#include <string>
#include <cstring>

class datadiri
{
      public:
      void setnama(string x);
      void setalamat(string x);
      void display();

     private:
     string nama,alamat;
};

void datadiri::setnama(string x)
{
      nama=x;
}

void datadiri::setalamat(string x)
{
      alamat=x;
}

void datadiri::display()
{
   cout<<"Data diri yang anda inputkan :"<<endl;
   cout<<"Nama :"<<nama<<endl;
   cout<<"Alamat :"<<alamat<<endl;
cout<<endl;
}


void main()
{
        datadiri lilis; /// cara pertama
        datadiri *dila=new datadiri();      /// cara kedua
        string x;
        cout<<"Informasi Tentang data Diri"<<endl;

   /// akses obyek dengan cara pertama
   cout<<"Masukkan nama :";
   getline(cin,x);
   lilis.setnama(x);

   cout<<"Masukkan alamat :";
   getline(cin,x);
   lilis.setalamat(x);

   cout<<endl;
   lilis.display();


   ///akses obyek dengan cara kedua
   cout<<"Masukkan nama :";
   getline(cin,x);
   dila->setnama(x);

   cout<<"Masukkan alamat :";
   getline(cin,x);
   dila->setalamat(x);

   cout<<endl;
   dila->display();

   getch();

}
================================
CONTOH 3 : CONSTRUCTOR DESTRUCTOR
#include <iostream>
#include <conio>
#include <string>
#include <cstring>

class mahasiswa
{
      private:
      string nama;
      double IPK;

   public:
      mahasiswa(string n,double ipk);  ///konstruktor;
      ~mahasiswa(); /// destruktor
      void display();
};


void main()
{
   mahasiswa a("Ririn",3.35);

   a.display();
 //   getch();
}


void mahasiswa::display()
{
    cout<<"Nama anda adalah :"<<nama<<endl;
    cout<<"IPK anda adalah :"<<IPK<<endl;
}


mahasiswa::mahasiswa(string n,double ipk)
{
   cout<<"Objek dibuat dan konstruktor dijalankan"<<endl;
   cout<<endl;
   nama=n;
   IPK=ipk;
}

mahasiswa::~mahasiswa()
{
    cout<<"Obyek akan dihancurkan, destruktor dijalankan"<<endl;
    getch();
}
====================================
CONTOH 4 : ENCAPSULATION\
#include <iostream>
#include <conio>
#include <string>
#include <cstring>


class pajak
{
    public:
      void setgaji(int g);
      void display();
  pajak();
  ~pajak();

    private:
      double getpajak();
      int gaji;
      double pajakmu;
};

pajak::pajak()
{
cout<<"begin"<<endl;
}

pajak::~pajak()
{
cout<<"destroy"<<endl;
getch();
}


void pajak::setgaji(int g)
{
     gaji=g;
}

double pajak::getpajak()
{
     double total;

     if(gaji>2000000)
     {
          total=gaji*0.15;
     }else
     {
          total=50000;
     }

   return total;
}

void pajak::display()
{
       pajakmu=getpajak();
       cout<<"Pajak yang anda bayar adalah "<<pajakmu<<endl;
}


void main()
{
   pajak dani;

   int gaji;
   cout<<"Program Untuk menghitung nilai pajak"<<endl;
   cout<<endl;

   cout<<"Masukkan jumlah gaji yang anda terima :";
   cin>>gaji;

   dani.setgaji(gaji);
   dani.display();


}
===============================================================
CONTOH 5 : INHERITANCE
#include <iostream>
#include <conio>
#include <string>

class mahlukhidup
{
       protected:
       string nama,sifat;

   public:
    void setmahluk(string n, string s)
   {
      nama=n;
      sifat=s;
   }
};


class hewan: public mahlukhidup
{
      public:
      void hewanku()
      {
cout<<"Nama hewan   :"<<nama<<endl;
cout<<"merupakan hewan :"<<sifat<<endl;
      }
};

class tumbuhan: public mahlukhidup
{
     public:
        void tumbuhanku()
      {
cout<<"Nama Tumbuhan :"<<nama<<endl;
cout<<"merupakan Tumbuhan :"<<sifat<<endl;
      }
};

void main()
{
    cout<<"Contoh Inheritance"<<endl;
    cout<<endl;
tumbuhan a;
              a.setmahluk("Mangga","Berbiji ganda");
              a.tumbuhanku();

    cout<<endl;
         hewan b;
         b.setmahluk("Singa","Karnivora");
         b.hewanku();

         getch();
}
===============================================
CONTOH 6 : POLIMORFISME
#include <iostream>
#include <conio>
#include <string>
#include <cstring>

class persegi
{
   public:
   virtual int proses(int s)
   {
       return s*s;
   }

   void luas(double s)
   {
      cout<<"Luasnya adalah :"<<s<<endl;
   }
};

class balok: public persegi
{
   public:
   virtual int proses(int s)
   {
       int luas=6*s*s;
       return luas;
   }

};

void main()
{
      cout<<"Contoh Program Polimorfisme "<<endl;
      cout<<endl;

      balok a;
      int sisi;
      double lu;

      cout<<"Masukkan panjang sisi :";
      cin>>sisi;

      lu=a.proses(sisi);
      a.luas(lu);
      getch();
}
===============================

Jumat, 18 Juli 2025

Pemrograman C++ BAB V

 CONTOH 1  : FUNGSI 1

#include <iostream>

#include <conio>


void coba_fungsi(); /// prototype fungsi


void main()

{

   cout<<"contoh fungsi sederhana ";

   cout<<"yang dipanggil dari fungsi main() :"<<endl;

   cout<<endl;

   coba_fungsi(); /// pemanggilan fungsi


   getch();

}


void coba_fungsi() /// pendefinian fungsi

{

cout<<"Ini adalah sebuah fungsi";

}

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

CONTOH 2 : FUNGSI 2

#include <conio>

#include <string>

#include <cstring> //// pustaka String versi C



void lagu_daerah(string lagu); /// prototype fungsi


void main()

{

string lagu;

   cout<<"contoh fungsi tanpa nilai pengembalian :"<<endl;

   cout<<endl;

   cout<<"Masukkan lagu daerah anda :";

   getline(cin,lagu);

   lagu_daerah(lagu); /// pemanggilan fungsi


   getch();

}


void lagu_daerah(string lagu)     /// pendefinisian fungsi tanpa nilai pengembalian

{

   cout<<endl;

   cout<<"Lagu daerah anda adalah :"<<lagu<<endl;

   cout<<"Bye-bye";

}

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

CONTOH 3 : FUNGSI 3

#include <iostream>

#include <conio>


int total(int amount);

void main()

{

    int gaji,harian,pajak;


    cout<<"Masukkan honor anda perhari :";

    cin>>harian;

    cout<<endl;

    gaji=total(harian);


    if(gaji>1000000)

    {

       pajak=gaji*0.10;

       cout<<"Pajak yang anda bayar :"<<pajak<<endl;

    }else

    {

    cout<<"Pajak yang anda bayar 50000"<<endl;

    }


    cout<<"Bye - bye";

getch();


}


int total(int amount) /// fungsi dengan nilai pengembalian int

{

int gaji=30*amount;


   return gaji;

}

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

CONTOH 4 : FUNGSI 4

#include <iostream>

#include <conio>


double luas_lingk(int jari); //// prototype fungsi 

void keliling_lingk(int); /// protipe fungsi tanpa penamaan argument

void main()

{

    double luas;

    int jari;

    cout<<"Fungsi untuk mencari luas dan keliling lingkaran :"<<endl;

    cout<<endl;

    cout<<"Masukkan nilai jari-jari :";

    cin>>jari;

    cout<<endl;


    luas=luas_lingk(jari);         //// pemanggilan fungsi dengan nilai pengembalian

    cout<<"Luas lingkaran adalah :"<<luas<<endl;


    keliling_lingk(jari);        /// pemanggilan fungsi tanpa nilai pengembalian


    cout<<"Bye - bye";


     getch();

}


double luas_lingk(int jari)      /// pendefinisian fungsi dengan nilai pengembalian

{

   double luas=3.14*jari*jari;

   return luas;

}


void keliling_lingk(int jari)   /// pendefinisian fungsi tanpa nilai pengembalian

{

   double keliling=2*3.14*jari;

   cout<<"Keliling lingkaran adalah :"<<keliling<<endl;

}

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

CONTOH 5 : FUNGSI 5

#include <iostream>

#include <conio>


int nilai_pangkat(int nilai, int pangkat);


void main()

{

      int nil,pan,hasil;


      cout<<"Program untuk menghitung nilai pangkat tertentu :"<<endl;

      cout<<endl;


      cout<<"Masukkan nilai yang ingin dipangkatkan :";

      cin>>nil;

      cout<<"Masukkan jumlah pemangkatan :";

      cin>>pan;

      cout<<endl;

      hasil=nilai_pangkat(nil,pan);



      cout<<"Nilai pangkatnya adalah :"<<hasil;

      getch();

}


int nilai_pangkat(int nil, int pan)

{

   int has=1;


   for(int i=0;i<pan;i++)

   {

    has=nil*has;

   }


   return has;

}

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

CONTOH 6 : FUNGSI 6

#include <iostream>

#include <conio>


const int panjang=10;

double rata_rata(double nilai[], int jumlah);


void main()

{

     cout<<"Program untuk mencari nilai rata-rata dengan fungsi :"<<endl;

     double rata;

     double nilai[panjang]={8,9,7,6,10,8,9,6,8,9};


      rata=rata_rata(nilai,panjang);


      cout<<"Nilai rata-rata mahasiswa :"<<rata<<endl;

      getch();

}


double rata_rata(double nil[], int pan)

{

   int total=0;

   double rata;


   for(int i=0;i<pan;i++)

   {

      total=total+nil[0];

   }


   rata=total/pan;

   return rata;

}

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

CONTOH 7 : FUNGSI  7

#include <iostream>

#include <conio>


struct pegawai

{

   int honor;

   int PNS;

};


pegawai keseluruhan(pegawai T_elektro,pegawai T_sipil);   /// prototype fungsi 

void display(pegawai total); /// protipe fungsi tanpa nilai pengembalian


pegawai mesin,elektro,total;

void main()

{

      cout<<"Program Fungsi dengan argument struktur"<<endl;

      cout<<endl;

      cout<<"Masukkan jumlah pegawai PNS dan honor Teknik Mesin :"<<endl;

      cout<<"Honor :";

      cin>>mesin.honor;

      cout<<"PNS :";

      cin>>mesin.PNS;

      cout<<"Masukkan jumlah pegawai PNS dan honor Teknik Elektro :"<<endl;

      cout<<"Honor :";

      cin>>elektro.honor;

      cout<<"PNS :";

      cin>>elektro.PNS;


       total=keseluruhan(mesin,elektro);///pemanggilan fungsi dengan nilai pengembalian

       display(total); /// pemanggilan fungsi tanpa nilai pengembalian

      getch();

}


pegawai keseluruhan(pegawai T_elektro,pegawai T_sipil)   /// pendefinisian fungsi

{

     pegawai total;

     total.honor=T_elektro.honor+T_sipil.honor;

     total.PNS=T_elektro.PNS+T_sipil.PNS;


     return total;

}


void display(pegawai jumlah) /// pendefinisian fungsi tanpa nilai pengembalian.

{

cout<<endl;

cout<<"Total Keseluruhan Pegawai "<<endl;

      cout<<"Jumlah pegawai Honor :"<<jumlah.honor<<endl;

      cout<<"Jumlah Pegawai PNS :"<<jumlah.PNS<<endl;

      cout<<"Jumlah keseluruhan pegawai :"<<(jumlah.honor+jumlah.PNS)<<endl;

}

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