Minggu, 17 April 2016

Answer Search

Postingan ini adalah jawaban dari pertanyaan pengunjung sebelumnya pada postinganBinarySearch C++. 

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

Follow Us @joseandreanhalomoan