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 :
ConversionConversion EmoticonEmoticon