Senin, 16 Mei 2016

DIKTAT BAB 8

1.     Perhatikan bahwa Anda dapat melewatkan banyak nomor dalam daftar dan masih berada dalam urutan menaik yaitu sebagai berikut :
3 4 6 17 21 24 32 43
Angka-angka ini meningkat saat Anda bergerak melalui daftar dari kiri ke kanan. Bangunlah sebuah array yang berisi angka-angka tersebut ? Kemudian lakukan pencarian biner (Binary Search) untuk memeriksa apakah angka yang kita cari ada dalam daftar array tersebut ?

Source code :

#include <iostream>
using namespace std;
int main(int argc, char** argv) {
            int banyakData, cariData, posisi=0;
    bool ketemu = false;

    cout << "Banyak data : ";
    cin >> banyakData;

    int data[banyakData];

    for(int ulang=0; ulang<banyakData; ulang++)
    {
        cout <<"Berikan Data ke["<<ulang<<"] : ";
        cin >> data[ulang];
    }

    cout <<"Data yang akan di cari posisinya: ";
    cin >> cariData;

    for(int ulang=0; ulang<banyakData; ulang++)
    {
        if(cariData == data[ulang])
        {
            posisi = ulang;
            ketemu = true;
            break;
        }
    }

    if(ketemu)
    {
        cout<<"Data "<<cariData<<" ditemukan di posisi : "<<posisi<<endl;
        cout<<"Terimakasih"<<endl;
    }
    else
    {
        cout<<"Data yang anda berikan"<<endl;
        cout<<"Tidak tertera pada data Array"<<endl;
    }
            return 0;

}









2. Jika terdapat sebuah array yang elemennya berindeks 1 sampai dengan 15. Masing-masing elemen berturut-turut berisi nilai sebagai berikut:
1, 2, 8, 25, 30, 49, 50, 55, 60, 61, 68, 70, 72, 84, 90.
a.     Jelaskan langkah-langkah pencarian nilai 49 dalam array tersebut dengan metode pencarian biner, sehingga menghasilkan indeks elemen array tempat ditemukannya nilai tersebut.
b.     Jelaskan langkah-langkah pencarian nilai 71 dalam array tersebut dengan metode pencarian biner, sehingga menghasilkan kesimpulan bahwa nilai tersebut tidak berhasil ditemukan.
Source code :
#include <cstdlib>
#include <iostream>

using namespace std;
void output(int a[14],int awal,int akhir,int tengah,int cari){

while(awal<=akhir){
                        tengah=(awal+akhir)/2;
                        if(cari>a[tengah]){
                                    awal=tengah+1;
                        }else if(cari<a[tengah]){
                                    akhir=tengah-1;
                        }else{
                                    awal=akhir+1;
                        }
            }
            if(cari==a[tengah]){
                        cout<<"Data di temukan indeks ke-"<<tengah<<endl;
            }else{
                        cout<<"Data tidak di temukan"<<endl;
            }
}
int main(int argc, char *argv[])
{
            int a[15]={(1),(2),(8),(25),(30),(49),(50),(55),(60),(61),(68),(70),(72),(84),(90)};
            int cari,awal,akhir,tengah;
            for(int i=0;i<15;i++){
                        cout<<a[i]<<" ";}
            cout<<"\nMasukan data yang di cari = ";
            cin>>cari;
            awal=0;akhir=15;
            output(a,awal,akhir,tengah,cari);
            system("pause");
            return 0;
}







3.     Urutkan deret angka berikut dengan bubble sort :
7 4 5 8 10
Tuliskan hasil tiap langkah (step).

Source code :
#include <iostream>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;

 int main()
{   int a,k,c,d,g;
    k=5;
    int b[5];

    cout<<"Bubble sort adalah salah satu metode sorting atau mengurutkan dari data terkecil ke data terbesar "<<endl<<endl;
    for(a=0;a<k;a++)
    {
        cout<<"Masukkan nilai "<<a+1<<" : ";
                 cin>>b[a];
    }
    for(a=0;a<k-1;a++)
    {

        for(d=a+1;d<k;d++)
        {
        c=a;
            if(b[c]<b[d])
            {
                c=d;
            }
        g=b[c];
        b[c]=b[a];
        b[a]=g;
        }

    }
    cout<<"\n setelah diurutkan akan menjadi : \n";
    for(a=0;a<k;a++)
    {
        cout<<b[a]<<" \n";
    }

   return 0;
}






4.     Periksalah daftar 6 angka di bawah ini :
14 32 5 12 61 7
Ketika Anda melihat daftar tersebut, Anda segera dapat melihat bahwa 5 adalah angka terkecil didaftar. Tugas ini lebih sulit untuk komputer. Jadi untuk itu harus dibuat program untuk menemukan nilai minimum tersebut. Buatlah program selection sort dan lakukan sorting secara manual (step by step) !

Source code :

#include <iostream>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

 int main()
{
  int data [50];
     int a,b;
     int max,min;

// masukan untuk batas
printf("Banyak Bilangan: ");scanf ("%d",&a);

//pengulangan untuk memasukkan data ke dalam array
for (b=1;b<=a;b++)
{
    printf("\nbilangan ke-%d: ",b);scanf("%d",&data [b]);
}
//mencari nilai terbesar dan terkecil di array dengan looping
          max=data[1];
          min=data[1];
      for (b=1;b<=a;b++)
      {
          if (data[b]>=max)
          {
          max=data[b];
          }
          else if (data[b]<=min)
          {
          min=data[b];
          }
      }
printf("\n\nnilai tertinggi\t:%d", max);
printf("\n\nnilai terkecil\t:%d", min);
getch();

    return 0;
}






5       Urutkan deret angka berikut dengan selection sort dan tuliskan hasil tiap langkah (step) :
21 16 25 8 19 4 1

Sour code :
#include <iostream>
#include <iomanip>
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
using namespace std;
template <class T>
void s_sort(T a[],int n)
       {
    int i,j,t;
    for(i=0;i<n;i++){
    for(j=i+1;j<n;j++){
    if(a[j]<a[i])
       {
    t=a[i];
    a[i]=a[j];
    a[j]=t;
    }}}
}
int main()
{
    int a[100],i,n;
    cout<<"Masukan jumlah elemen : ";
    cin>>n;
    cout<<"Masukan elemen - elemen tersebut :";
    for(i=0;i<n;i++)
    {
       cout<<"\n Enter : ";
    cin>>a[i];
    }
    s_sort(a,n);
    cout<<"Setelah di sorting :";
    for(i=0;i<n;i++)
    {
    cout<<a[i]<<" , ";
    }
   
    return 0;
}




Emoticon Emoticon