Postingan ini adalah jawaban dari pertanyaan pengunjung sebelumnya pada postinganBinarySearch C++.
JAWABAN 1 :
JAWABAN 1 :
Apabila yang dimaksud adalah pencarian tiga data secara berturut-turut berikut ini adalah kode programnya, yang pada intinya menggunakan perulangan.
/*
Binary search() C++
Compiler : Microsoft Visual Studio 2012
By N.N. Blog
*/
#include <iostream>
using namespace std;
#include <conio.h>
#include <iomanip>
int data[7] = {1, 8, 2, 5, 4, 9, 7};
int cari[3];
int y = 0;
void selection_sort()
{
int temp, min, i, j;
for(i=0; i<7;i++)
{
min = i;
for(j = i+1; j<7; j++)
{
if(data[j]<data[min])
{
min=j;
}
}
temp = data[i];
data[i] = data[min];
data[min] = temp;
}
}
void binarysearch()
{
//searching
int awal, akhir, tengah, b_flag = 0;
awal = 0;
akhir = 7;
while (b_flag == 0 && awal<=akhir)
{
tengah = (awal + akhir)/2;
if(data[tengah] == cari[y])
{
b_flag = 1;
break;
}
else if(data[tengah]<cari[y])
awal = tengah + 1;
else
akhir = tengah -1;
}
if(b_flag == 1)
cout<<"Data '"<<cari[y]<<"' ditemukan pada index ke-"<<tengah<<endl;
else
cout<<"Data '"<<cari[y]<<"' tidak ditemukan\n";
//increment nilai y, bergeser ke data yang dicari selanjutnya
y++;
}
int main()
{
int n;
cout<<"\t 'BINARY SEARCH'"<<endl;
cout<<"\t====================="<<endl;
cout<<"\nData : ";
//tampilkan data awal
for(int x = 0; x<7; x++)
cout<<setw(3)<<data[x];
cout<<endl;
cout<<endl;
for(n = 0; n<3;n++)
{
cout<<"Data yang ingin Anda cari : ";
cin>>cari[n];
}
cout<<"\nData diurutkan : ";
//urutkan data dengan selection sort
selection_sort();
//tampilkan data setelah diurutkan
for(int x = 0; x<7;x++)
cout<<setw(3)<<data[x];
cout<<endl;
cout<<endl;
for(n = 0; n<3;n++)
{
binarysearch();
}
_getche();
return EXIT_SUCCESS;
}
Output :
JAWABAN 2 :
Apabila yang dimaksud adalah melakukan pencarian data dimana data yang dicari kemungkinan terdapat lebih dari satu pada suatu array berikut kode programnya. Untuk pencarian seperti ini biasanya memanfaatkan reserved word 'continue'. Dengan menggunakan 'continue' program akan tetap melanjutkan pencarian sampai index terakhir meskipun data yang dicari sudah pernah ditemukan sebelumnya. Namun, pada program ini keberadaan reserved word 'continue' tidak begitu terasa, karena jika dihilangkan pun program ini masih akan tetap menghasilkan hasil yang sama.
/*
Linear search() C++
Compiler : Microsoft Visual Studio 2012
By N.N. Blog
*/
//header file
#include <iostream>
using namespace std;
#include <conio.h>
//deklarasi variabel global
int data [] = {12, 14, 15, 12, 5, 12};
//fungsi utama
int main()
{
int i, flag = 0, cari;
int data_ditemukan = 0; //variabel untuk jumlah data ditemukan
cout<<"\tPROGRAM PENCARIAN ";
cout<<"\n\t=================";
//tampilkan isi array
cout<<"\n\nData : \n\t";
for(i=0; i<6; i++)
{
cout<<data[i]<<"\t";
}
cout<<"\n\nData yang Anda cari : ";
cin>>cari;
cout<<endl;
//pencarian data dengan linear search
for(i=0;i<6;i++)
{
if(data[i]==cari)
{
flag = 1;
data_ditemukan++;
cout<<"Data yang Anda cari ditemukan pada index ke-"<<i<<"\n";
//Fungsi 'continue' mengarahkan eksekusi ke putaran berikutnya pada perulangan. Coba ganti 'continue' dengan 'break' dan perhatikan hasilnya.
continue;
}
}
if(flag!= 1)
cout<<"Data yang Anda cari tidak ditemukan";
cout<<"\nJumlah data yang ditemukan : "<<data_ditemukan<<" data"<<endl;
_getche();
return EXIT_SUCCESS;
}
Output :
Tidak ada komentar:
Posting Komentar