Program Binary Search Sistem Berkas Menggunakan Bahasa Pemrograman C++



Program ini merupakan program binary search dengan menggunakan bahasa pemrograman c++ dan compiler borland. Prinsip kerja dari binary search ini adalah dengan mula-mula diambil posisi awal 0 dan posisi akhir = N-1, kemudian dicari posisi data tengan dengan rumus ( posisi awal + posisi akhir ) / 2. Kemudian data yang dicari dibandingkan dengan data tengah, jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah-1. Jika lebih besar, proses dilakukan kembali tetapi posisi tengah+1. Demikian seterusnya sampai data tengah sama dengan data yang dicari. Sedangkan untuk implementasi di dalam programnya adalah dengan menggunakan struct, array, pointer dan function. Program ini bernama program Cimul Laundry yaitu pendataan pakaian yang akan di laundry, dengan harga pakaian yang sudah ditentukan lebih dulu yaitu 5000 per kilo, dan 20 nama pelanggan yang sudah diinputkan lebih dulu. Data ini akan di urutkan berdasarkan jumlah total bayarnya. Di dalam menu program ini ada menu insert untuk menambahkan data, data bertambah dari yang semula sudah di sediakan 20 menjadi 21 an seterusnya, menu output untuk menampilkan data yang sudah terurut, menu search untuk pencarian berdasarkan total bayar, menu edit bisa diedit bagian apa saja, menu delete untuk menghapus data dan terakhir menu exit untuk keluar.

source kodenya adalah sebagai berikut :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream.h>
#include <iomanip.h>

char pil;
char *pl=&pil; //penerapan pointer
int jml,a,probe=1;
struct laundry{ //penerapan struct
char nama[20];
long bayar,laundry,lama,totbay;
}pencuci[30];
long Pakaian = 5000 ,temp,temp3,temp4,key,bilCari;
char cari[20],temp2[20];


BinarySearch(){
    int low=0, high=20+jml-1, mid;
   while(low<=high){
   mid=(low+high)/2; /*index tengah*/
   if(bilCari<pencuci[mid].totbay){
   high=mid-1;
   probe++;}
   else if(bilCari>pencuci[mid].totbay){
   low=mid+1;
   probe++;}
   else
   return mid;
   }
return -1; /*nilai tidak ditemukan*/

}

void hitung(){
for(int i=0;i<20+jml;i++){
            pencuci[i].totbay = pencuci[i].bayar*Pakaian;
            }
}

main(){

strcpy(pencuci[0].nama,"Siti");
strcpy(pencuci[1].nama,"Mulia");
strcpy(pencuci[2].nama,"Sari");
strcpy(pencuci[3].nama,"Harum");
strcpy(pencuci[4].nama,"Cahyani");
strcpy(pencuci[5].nama,"Ari");
strcpy(pencuci[6].nama,"Farni");
strcpy(pencuci[7].nama,"Rizky");
strcpy(pencuci[8].nama,"Arief");
strcpy(pencuci[9].nama,"Jasly");
strcpy(pencuci[10].nama,"Tika");
strcpy(pencuci[11].nama,"Gina");
strcpy(pencuci[12].nama,"Ira");
strcpy(pencuci[13].nama,"Dita");
strcpy(pencuci[14].nama,"Syarifah");
strcpy(pencuci[15].nama,"Nuri");
strcpy(pencuci[16].nama,"Halimah");
strcpy(pencuci[17].nama,"Yeni");
strcpy(pencuci[18].nama,"Leni");
strcpy(pencuci[19].nama,"Rabi");

pencuci[0].bayar=2;
pencuci[1].bayar=5;
pencuci[2].bayar=7;
pencuci[3].bayar=2;
pencuci[4].bayar=5;
pencuci[5].bayar=4;
pencuci[6].bayar=1;
pencuci[7].bayar=5;
pencuci[8].bayar=19;
pencuci[9].bayar=25;
pencuci[10].bayar=34;
pencuci[11].bayar=42;
pencuci[12].bayar=59;
pencuci[13].bayar=12;
pencuci[14].bayar=19;
pencuci[15].bayar=32;
pencuci[16].bayar=61;
pencuci[17].bayar=77;
pencuci[18].bayar=15;
pencuci[19].bayar=89;

pencuci[0].lama=2;
pencuci[1].lama=2;
pencuci[2].lama=5;
pencuci[3].lama=3;
pencuci[4].lama=2;
pencuci[5].lama=1;
pencuci[6].lama=1;
pencuci[7].lama=1;
pencuci[8].lama=2;
pencuci[9].lama=3;
pencuci[10].lama=4;
pencuci[11].lama=4;
pencuci[12].lama=2;
pencuci[13].lama=9;
pencuci[14].lama=2;
pencuci[15].lama=3;
pencuci[16].lama=4;
pencuci[17].lama=7;
pencuci[18].lama=2;
pencuci[19].lama=2;

do
{

system("cls");
cout<<endl<<endl;
cout<<"\t|-------------------------------------------|"<<endl;
cout<<"\t|              CIMUL LAUNDRY                |"<<endl;
cout<<"\t|-------------------------------------------|"<<endl;
cout<<"\t|1. Insert                                  |"<<endl;
cout<<"\t|2. Output                                  |"<<endl;
cout<<"\t|3. Search                                  |"<<endl;
cout<<"\t|4. Edit                                    |"<<endl;
cout<<"\t|5. Delete                                  |"<<endl;
cout<<"\t|0. Exit                                    |"<<endl;
cout<<"\t|-------------------------------------------|"<<endl;
cout<<"\tMasukkan pilihan ( 0 - 5 ) : "; cin>>*pl;


switch (pil) {
case '1':
    {   clrscr();
        cout<<endl<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\t|        INSERT                         |"<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\n\tHarga Pakaian (/1kg) saat ini Rp "<<Pakaian;//;cin>>Pakaian;
        cout<<"\n\n\tMasukkan banyaknya data yang ingin ditambahkan : "; cin>>jml;
        for(int i=20;i<20+jml;i++)
        {
        clrscr();
        cout<<endl<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\t|        INSERT                         |"<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\tData ke "<<(i+1)<<"["<<(i+1)<<"/"<<(20+jml)<<"]";
        cout<<"\n\n\tMasukkan nama pelanggan : ";fflush(stdin);gets(pencuci[i].nama);
        cout<<"\tJumlah pakaian (/1kg) : "; cin>>pencuci[i].bayar;
        cout<<"\tLama cuci (hari) : ";cin>>pencuci[i].lama;
        cout<<"\n\t~ SUCCESS ~";
        getch();}


    } break;
case '2':{
 hitung();
     //selection sort
    clrscr();
    for(int a=0;a<20+jml-1;a++){
    for(int b=a+1;b<20+jml;b++){
    if(pencuci[a].totbay>pencuci[b].totbay){
    temp=pencuci[b].totbay;
    strcpy(temp2,pencuci[b].nama);
    temp3=pencuci[b].bayar;
    temp4=pencuci[b].lama;


    pencuci[b].totbay=pencuci[a].totbay;
    pencuci[a].totbay=temp;

    pencuci[b].bayar=pencuci[a].bayar;
    pencuci[a].bayar=temp3;

    strcpy(pencuci[b].nama,pencuci[a].nama);
    strcpy(pencuci[a].nama,temp2);

    pencuci[b].lama=pencuci[a].lama;
    pencuci[a].lama=temp4;

    }
    }
    }
        cout<<endl<<endl;
        cout<<"\n\n\tHarga per pakaian = Rp "<<Pakaian<<endl;;
        cout<<"\n\t                      DATA LAUNDRY  "<<endl;
        cout<<" \t              SETELAH DIURUTKAN BERDASARKAN TOTAL BAYAR "<<endl;
        cout<<endl;
        cout<<" \t---------------------------------------------------------------------------------- "<<endl;
        cout<<" \tNo.   Nama         Jumlah Pakaian      Lama di cuci (hari)        Total Bayar (Rp) "<<endl;
        cout<<" \t-----------------------------------------------------------------------------------"<<endl;

        for(int a=0;a<20+jml;a++){
            cout<<setw (9)<<(a+1);
            cout<<setw (11)<<pencuci[a].nama;
            cout<<setw (16)<<pencuci[a].bayar;
            cout<<setw (18)<<pencuci[a].lama;
            cout<<setw (29)<<pencuci[a].totbay;
            cout<<endl;
            }

    cout<<"\n";
    getch();
    }break;

case '3':{
       cout<<"\n\tMasukkan total bayar yang ingin dicari: ";
   cin>>bilCari;
   int BS=BinarySearch();
if (BS==-1) cout<<"\n\n\tTOTAL BAYAR Rp "<<bilCari<<" DATA TIDAK DI TEMUKAN !!";
else{
       clrscr();
 cout<<" \n\t-------------------------------------------------------------------------- "<<endl;
 cout<<" \t                     SEARCH "<<endl;
 cout<<endl;
 cout<<" \t---------------------------------------------------------------------------- "<<endl;
 cout<<" \tNo.   Nama         Jumlah Pakaian (/1kg)      Lama di cuci (hari)        Total Bayar (Rp) "<<endl;
 cout<<" \t---------------------------------------------------------------------------- "<<endl;
 for(int a=0;a<20+jml;a++){
 if (bilCari==pencuci[a].totbay){
            cout<<setw (9)<<(a+1);
            cout<<setw (11)<<pencuci[a].nama;
            cout<<setw (16)<<pencuci[a].bayar;
            cout<<setw (18)<<pencuci[a].lama;
            cout<<setw (21)<<pencuci[a].totbay;
            cout<<endl;
        }}

 cout<<"\n\n\tTotal Bayar Rp "<<bilCari<<" yang dicari ditemukan pada probe ke "<<probe;
}
getch();
probe=1;
}break;

case '4':{
        clrscr();
                int edit;
        cout<<endl<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\t|        EDIT           |"<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\tMasukkan data keberapa yang ingin di edit: ";cin>>edit;
        int a=edit;
        cout<<"\tData ke "<<edit<<"["<<edit<<"/"<<(20+jml)<<"]"<<endl;
        cout<<"\tMasukkan nama : ";fflush(stdin);gets(pencuci[a-1].nama);
        cout<<"\tJumlah pakaian (/1kg)   :  "; cin>>pencuci[a-1].bayar;
        cout<<"\tLama di cuci (hari) : "; cin>>pencuci[a-1].lama;
        cout<<"\n\t ~ SUCCESS ~ ";
        getch();
}break;

case '5':{
        clrscr();
                int hapus;
        cout<<endl<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\t|        DELETE          |"<<endl;
        cout<<"\t|---------------------------------------|"<<endl;
        cout<<"\n\tMasukkan data keberapa yang ingin di hapus: ";cin>>hapus;
        int a=hapus;
        cout<<"\tData ke "<<hapus<<"["<<hapus<<"/"<<(20+jml)<<"]"<<endl;
        for (int i=a-1;i<20+jml-1;i++){
        strcpy(pencuci[i].nama,pencuci[i+1].nama);
        pencuci[i].bayar=pencuci[i+1].bayar;
        pencuci[i].lama=pencuci[i+1].lama;
        pencuci[i].laundry=pencuci[i+1].laundry;
        }
        cout<<"\n\t ~ SUCCESS ~ ";
        getch();
}break;

default:
    {
        if(pil!='0')
        {cout<<"\n\tInvalid"; }
};}
} while(pil!='0');
cout<<"\n\n\n\n"<<"\t\tTHANK YOU ";
getch();
}

outputnya adalah sebagai berikut :











Previous
Next Post »
Thanks for your comment