Translate

Senin, 27 Februari 2017

Pencarian Aray Menggunakan Metode Binary search Interpolation search

Metode pencarian yang kedua adalah
binary search , pada metode pencarian ini, data harus diurutkan terlebih dahulu. Pada metode pencarian ini, data dibagi menjadi dua bagian (secara logika), untuk setiap tahap pencarian. Algoritma binary search :
1. Data diambil dari posisi 1 sampai posisi akhir N
2. Kemudian cari posisi data tengah dengan rumus: (posisi awal + posisi akhir) / 2
3. Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama atau lebih kecil, atau lebih besar?
4. Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1
5. Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1
6. Jika data sama, pencarian dihentikan, data ditemukan.
7. Jika sudah melewati semua posisi, data tidak ditemukan, pencarian dihentikan. Contoh 3 source binary search


#include <stdio.h>
#include <iostream>
using namespace std;

int main()
{
   int data[100], batas, flag=0, i, cari, awal, tengah, akhir;
   awal=0;
   cout<<"Masukkan banyaknya data yang di inginkan : "; cin>>batas;
   for (i=0; i<batas; i++){
    cout<<"Masukkan data "<<i+1<<" : "; cin>>data[i];
   }
   cout<<endl;
   cout<<"data "<<endl;
   for (i=0; i<batas; i++){
    cout<<data[i]<<" ";
   }
   akhir=batas;
    cout<<endl;
   cout<<"data yang dicari "; cin>>cari;
    while (awal<=akhir && flag==0){
        tengah=(awal+akhir)/2;
        cout<<"data tengah --> "<<tengah<<" data ke-"<<data[tengah]<<endl;
        if (data[tengah]==cari){
            flag=1;
            break;
        }
        else if (data[tengah]<cari){
            awal=tengah;
            cout<<"cari di bagian kanan"<<endl<<endl;
        }
        else {
            akhir=tengah-1;
            cout<<"cari di bagian kiri"<<endl<<endl;
        }
    }
    cout<<endl;
     if (flag==1) {
        cout<<"DATA DITEMUKAN !"<<endl;
        for (i=0; i<10; i++){
            if (data[i]==cari)
            cout<<"Data berada pada index ke-"<<i+1<<endl;
        }

     }
    else
        cout<<"NOT FOUND !";
}


I n t e r p o l a t i o n s e a r c h
merupakan salah satu metode pencarian yang dapat
digunakan. Seperti pada
binary search, data yang harus diurutkan terlebih dahulu, sebelum dapat dilakukan pencarian dengan metode ini. Pada metode pencarian ini, kita mencoba menebak letak data yang kita cari, dengan perhitungan  :




• Jika data[posisi] > data yg dicari, high = pos – 1
• Jika data[posisi] < data yg dicari, low = pos + 1 Contoh 4
source code interpolation sear ch :  




Pencarian Aray 2D (Matriks), Ganjil Genap, dan Huruf. Pemrograman C++

soal 1.
Buatlah program untuk mencari data pada array 2 dimensi (opsional: tambahkan kode program untuk memberi inputan data dan ukuran array,) Contoh data array: 
1     3    2 
10   5    8 
15  24  10 
yang dicari: 24 
output : data 24 berada pada posisi [2][1] 
yang dicari: 2 
output:  data 2 berada pada posisi [0][2] 
petunjuk: gunakan sequential search, karena data tidak diurutkan, terdapat 2 looping untuk proses pencarian. 

soal 2.
Buat program untuk mencari data berupa huruf pada inputan yang berupa kalimat. (Opsional: hitung jumlah konsonan, dan vokal). 

soal 3.
Buat program untuk mencari bilangan ganjil dan bilangan genap dari data angka yang diinputkan oleh user (opsional: berikan indeks untuk setiap data yang ditemukan). 

PEMECAHAN MASALAH
soal 1.

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    cout<<"SOAL NO 1"<<endl;
    cout<<"+----------------------+"<<endl;
    cout<<"|Muh. Budi Dharmawan P |"<<endl;
    cout<<"|E1E1 15 034           |"<<endl;
    cout<<"+----------------------+\n"<<endl;
   
    ulang://untuk kembali memasukkan matrix
    cout<<"\n=====================***=======================\n"<<endl;
    int baris,kolom,i,j,cari,flag=0;

    cout<<"Masukan panjang matrikx     : ";cin>>baris;
    cout<<"Masukan lebar matrix        : ";cin>>kolom;
    cout<<endl;
    int mtrx[baris][kolom];

    for ( i=0;i<baris;i++)
    {
        for ( j=0;j<kolom;j++)
        {

            cout<<"Masukan nilai matrix ["<<i<<"]["<<j<<"] : ";cin>>mtrx[i][j];
        }
    }
   
        cout<<"\nMATRIX ANDA : "<<endl;
        for ( i=0;i<baris;i++)
        {
            cout<<endl;
            for ( j=0;j<kolom;j++)
            {
                cout<<"\t"<<mtrx[i][j]<<"\t";
            }
            cout<<endl;
        }
   
            char tanya;
            cout<<"\nApakah anda ingin mengganti data ? (y/n) : ";cin>>tanya;
            if (tanya=='n')
            {
                cout<<"\nMasukan nilai yang dicari : ";cin>>cari;
                    for ( i=0;i<baris;i++)
                    {
                        for ( j=0;j<kolom;j++)
                        {
               
                            if(mtrx[i][j]==cari)
                            {
                                flag=1;
                            }
                            if(flag==1)
                                cout<<"\nData "<<cari<<" ditemukan pada index["<<i<<"]["<<j<<"]";
                        }
                    }
                    if(flag!=1)
                    cout<<"\nData tidak ada...";
            }
           
            else
            {
                goto ulang;
            }
   
    goto ulang;
   
getch();
return 0;

}











soal 2.
#include <iostream>
#include <conio.h>
#include <string.h>
using namespace std;

int main()
{
    cout<<"SOAL NO 2"<<endl;
    cout<<"+----------------------+"<<endl;
    cout<<"|Muh. Budi Dharmawan P |"<<endl;
    cout<<"|E1E1 15 034           |"<<endl;
    cout<<"+----------------------+\n"<<endl;
   
    ulang://untuk kembali inputan kata kembali, namun masih tidak berfungsi sesuai harapan
    cout<<"\n=====================***=======================\n"<<endl;
   
    int vokal=0, konsonan=0, spasi=0, flag=0, i, batas;
    char kata[2000],cari;
    cout <<"Input : "; gets(kata);
    cout <<"Output : "<<endl;
        for(i=0;i<kata[i];i++)
            {
                if(kata[i]=='a'||kata[i]=='i'||kata[i]=='u'||kata[i]=='e'||kata[i]=='o') {
                    vokal++;
                }
                else if(kata[i]==' '){
                    spasi++;
                }
                else
                    konsonan++;
            }
            cout<<endl;
           
    cout<<"\tVocal = "<<vokal<<" = ";
        for(i=0;i<kata[i];i++)
            {
                   if(kata[i]=='a'||kata[i]=='i'||kata[i]=='u'||kata[i]=='e'||kata[i]=='o')
                {
                    cout<<kata[i]<<" ";
                }
            }
            cout<<endl;
   
    cout<<"\tKonsonan = "<<konsonan<<" = ";
        for(i=0;i<kata[i];i++)
            {
                if(kata[i]=='a'||kata[i]=='i'||kata[i]=='u'||kata[i]=='e'||kata[i]=='o'){
                    cout<<"";
                }
                else if(kata[i]==' '){
                    cout<<"";
                }
                else
                    cout<<kata[i]<<" ";
            }
            cout<<endl;
           
    char tanya;
    cout<<"\nApakah anda ingin mengganti kata/kalimat? (y/n) : ";cin>>tanya;
    if (tanya=='n')
    {
        cout<<"\n\tMasukkan data yang akan anda cari : "; cin>>cari;
        for(i=0;i<kata[i];i++)
            {
                if(kata[i]==cari)
                flag=1;
            }
       
                if(flag==1)
                {
                        cout<<"\tData ditemukan!";
                }
                else
                {
                        cout<<"\tData tidak ada...\n";
                }
    }
    else
    {
        goto ulang;//pada perulangan ini tidak bekerja sesuai harapan, masih ada kesalahan penggunaan kode
    }
           
    getch();
    return 0;
}















soal 3.


#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
    cout<<"SOAL NO 3"<<endl;
    cout<<"+----------------------+"<<endl;
    cout<<"|Muh. Budi Dharmawan P |"<<endl;
    cout<<"|E1E1 15 034           |"<<endl;
    cout<<"+----------------------+\n"<<endl;
   
    ulang://untuk kembali memasukkan matrix
    cout<<"\n=====================***=======================\n"<<endl;

    int data[100],batas,ganjil[100],genap[100],jil[100],nap[100];
    int a=0,b=0;
    string pilih,tanya;

    cout<<"Masukkan batas memory : ";cin>>batas;
    cout<<"\nMasukkan angka anda!\n";
    for(int i=0;i<batas;i++)
    {
        cout<<"\tmemory "<<i<<" = ";cin>>data[i];
    }

        cout<<"Angka yang anda miliki : "<<endl;
       
        for(int i=0;i<batas;i++)
        {
            cout<<"\t"<<data[i];
        }
   
        for(int i=0;i<batas;i++)
        {
            if(data[i]%2==0)
            {
                genap[b]=data[i];
                nap[b]=i;
                b++;
            }
            else
            {
                ganjil[a]=data[i];
                jil[a]=data[i];
                a++;
            }
        }
       
        cout<<"\nUbah data? (y/n) : ";cin>>tanya;
        if (tanya=="y")
        {
            goto ulang;
        }
        else
        {
           
            cout<<"\n\nApakah anda ingin mencari data ganjil? (y/n): ";cin>>pilih;
            if(pilih=="y"||pilih=="yes"||pilih=="Y")
            {
                cout<<"\n\tBilangan ganjil anda"<<endl;
                if(a<1)
                {
                    cout<<"\tData tidak ditemukan...";
                }
                else
                for(int i=0;i<a;i++)
                {
                    cout<<"\tIndex ke-"<<jil[i]-1<<" : "<<ganjil[i]<<endl;
                }
       
            }
            if(pilih=="n"||pilih=="no"||pilih=="N")
            {
                   cout<<"\n\tbilangan genap anda"<<endl;
                if(b<1)
                {
                    cout<<"\tData di temukan!"<<endl;
                }
                else
                for(int i=0;i<b;i++)
                {
                    cout<<"\tIndex ke-"<<nap[i]<<" : "<<genap[i]<<endl;
                }
            }
           
        }

    goto ulang;          

    getch();
    return 0;
}
 



Senin, 20 Februari 2017

CODINGAN MENGGUNAKAN BAHASA PEMROGRAMAN C++ DENGAN CONTOH KASUS UPDATE, HAPUS, GANTI DATA.


Kali ini saya akan berbagi sedikit kodingan program dengan contoh kasus sebagai berikut:

1. Program penghapusan data dengan inputan berupa angka yang ingin dihapus oleh user.
Ketentuan :
*Semua data yang sesuai dengan inputan user akan terhapus.
*Bonus jika terdapat counter untuk menghitung berapa data yang terhapus.
2. Program untuk melakukan update data.
Ketentuan :
*Terdapat dua inputan, yaitu inputan data yang akan diubah dan data baru (data pengganti)
*Semua data yang sesuai dengan inputan user akan diupdate nilainya. 
3. Program untuk melakukan penambahan data.
Ketentuan :
*Penambahan data dapat dilakukan di mana saja.
*Inputan dari user berupa : A.Nilai yang akan ditambahkan |  B.Indeks ke berapa yang dituju
*Setelah penambahan, maka jumlah data akan bertambah dan posisi data akan bergeser sesuai dengan penambahan yang telah dilakukan.

Pemecahan masalah
1. Penghapusan data

code program dalam bahasa pemrograman C++:

#include <iostream>
using namespace std;

int main()
{
    cout<<"SOAL NO 1"<<endl;
    cout<<"+----------------------+"<<endl;
    cout<<"|Muh. Budi Dharmawan P |"<<endl;
    cout<<"|E1E1 15 034           |"<<endl;
    cout<<"+----------------------+\n"<<endl;
   
    ulang://untuk kembali melakukan penghapusan
    cout<<"==============***================\n"<<endl; //ini merupakan identitas saya, kmu bisa ganti sesuai nama kamu tapi ingat, sesuaikan ukurannya
   
    int data [8]={2,12,6,12,12,7,6,12},n,hapus;//fariabel yang kamu buat
    for (n=0;n<8;n++)//rumus
         {
            cout<<("%i ",data[n])<<" ";//menampilkan data [8]
         }

          cout<<"\ndata yang ingin dihapus : ";
          cin>>hapus;//memilih data yang akan dihapus

          cout<<"data "<<hapus<<" berhasil di hapus\n";
          cout<<"\nData yang sekarang : \n";
         
    for (n=0;n<8;n++)//rumus

         {
            if(data[n]!=hapus)
            {
            cout<<data[n]<<" ";//menampilkan data sekarang hasil hapusan
            }
         }
         cout<<"\n\n";
   
    goto ulang;//kembali ke "ulang" maksudnya prongram akan mulai membaca lagi dari proses pertama
    return 0;
}


itu tadi code program yang saya buat, jika kurang jelas atau kurang mengerti, berikut saya sediakan screen shotnya:

dan hasil dari program ini:






2. Program untuk melakukan update data.

code program dalam bahasa pemrograman C++:

#include <iostream>
using namespace std;

int main()
{
    cout<<"SOAL NO 2"<<endl;
    cout<<"+----------------------+"<<endl;
    cout<<"|Muh. Budi Dharmawan P |"<<endl;
    cout<<"|E1E1 15 034           |"<<endl;
    cout<<"+----------------------+\n"<<endl;
   
    ulang://untuk kembali melakukan penghapusan
    cout<<"==============***================\n"<<endl; //ini merupakan identitas saya, kmu bisa ganti sesuai nama kamu tapi ingat, sesuaikan ukurannya
   
         int data [8]={2,12,6,12,12,7,6,12},n;//fariable data
             for (n=0;n<8;n++)//rumus
             {
                cout<<("%i ",data[n])<<" ";
             }
                cout<<"\ndata yang akan di ganti : ";
                int hapus,ganti;
                cin>>hapus;//memasukkan data yang akan diganti

                cout<<"\nMasukan data pengganti : ";
                cin>>ganti;//memasukkan nilai pengganti dari data yang diganti
                   cout<<"data "<<hapus<<" berhasil di ganti dengan " <<ganti<<endl;
            for (n=0;n<8;n++)//rumus
            {
                if(data[n]==hapus)
                {
                    data[n]=ganti;
                }
                cout<<data[n]<<" ";//menampilkan data yang telah diganti
            }
            cout<<"\n"<<endl;
    goto ulang;//proses pembacaan program akan diulang ke "ulang" diatas

    return 0;
}

 itu tadi code program yang saya buat, jika kurang jelas atau kurang mengerti, berikut saya sediakan screen shotnya:
 dan hasil dari program ini:
 



 3. Program untuk melakukan penambahan data.

code program dalam bahasa pemrograman C++:

#include <iostream>
using namespace std;

int main()
{
    cout<<"SOAL NO 3"<<endl;
    cout<<"+----------------------+"<<endl;
    cout<<"|Muh. Budi Dharmawan P |"<<endl;
    cout<<"|E1E1 15 034           |"<<endl;
    cout<<"+----------------------+\n"<<endl;
   
    ulang://untuk kembali melakukan penghapusan
    cout<<"==============***================\n"<<endl; //ini merupakan identitas saya, kmu bisa ganti sesuai nama kamu tapi ingat, sesuaikan ukurannya
   
     int A []={2,12,6,12,12,7,6,12,0},n,indeks,tambah;;//fariable yang dapat ditentukan sendiri
     for (int n=0;n<8;n++)//rumus
         {
             cout<<("%i ",A[n])<<" ";
         }
          cout<<"\nNilai yang akan di tambah : ";
          cin>>tambah;//emasukkan nilai yang akan ditambah
          cout<<"\nIndeks ke berapa yang dituju :";
          cin>>indeks;//memilih index yang akan diganti dengan nilai yang telah ditambah
          int batas=indeks-1;
          for (int x=8;x>=batas;x--)//rumus
            {
                if(x!=batas)
                     {
                      A[x]=A[x-1];
                      }
                else
                      {
                      A[x]=tambah;
                    }
            }
            cout<<"\n";
          for (int x=0;x<=8;x++)//rumus
            {
                cout<<A[x]<< " ";//untuk menampilkan data yang telah di update
            }
        cout<<"\n"<<endl;
        goto ulang;//kembali ke proses awal
    return 0;
}

itu tadi code program yang saya buat, jika kurang jelas atau kurang mengerti, berikut saya sediakan screen shotnya:

dan hasil dari program ini:


nah, itu tadi kodingan menggunakan bahasa pemrograman C++ untuk contoh kasus mengganti data, mengupdate data, dan menghapus data. jika ada yang perlu untuk ditannyakan atau kurang menggerti, silangkan coment di kolom komentar, insyaAllah ane balas comennya.