tugas struktur data

29
Muhammad Fauzi & Reiza Pahalwan 1 Tugas Struktur Data ~Soal~ BAB I 1. Buatlah program perkalian matriks dengan menggunakan bahasa pemrograman C/C++! 2. Ada 5 orang mahasiswa dan tiap mahasiswa mengambil 7 mata kuliah, nilai yang diperoleh berupa angka (0-100). Buatlah program untuk mencari nilai rata-rata dengan menggunakan bahasa pemrograman C/C++! 3. Buatlah program pendataan data mahasiswa dengan menggunakan tipe data record dengan menggunakan bahasa pemrograman C/C++! BAB II 4. Jika diketahui sebuah kalimat adalah sebagai berikut : TEKNIK INFORMATIKA JURUSAN FAVORIT. Buatlah program dengan bahasa C/C++ untuk membalikan kalimat tersebut! BAB IV 5. Carilah 2 metode sorting lainnya dan buat masing-masing Algoritma, Flowchart, dan program dengan menggunakan bahasa C/C++! 6. Dengan menggunakan Algoritma (langkah-langkah) yang ada pada metode Pengurutan langsung dan metode seleksi, buatlah a. Flowchart system b. Program untuk pengurutan data metode seleksi dan metode langsung dengan C/C++ 7. Dari contoh Program sorting dengan metode bubble sort diatas dengan bahasa pascal, rubahlah ke dalam bahasa pemrograman C/C++! BAB V 8. Carilah 2 metode searching (pencarian) lainya dan buatlah masing-masing Algoritma, flowchart dan programnya menggunakan bahasa C/C++! 9. Dengan menggunakan Algoritma (langkah-langkah) yang ada pada pencarian data, buatlah : a. Flowchart metode seuqential searching dan metode binary searching b. Program dan outputnya untuk metode sequential searching dan metode binary searching dengan bahasa C/C++

Upload: fauzi

Post on 02-Jul-2015

2.369 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

1

Tugas Struktur Data

~Soal~

BAB I

1. Buatlah program perkalian matriks dengan menggunakan bahasa pemrograman C/C++!

2. Ada 5 orang mahasiswa dan tiap mahasiswa mengambil 7 mata kuliah, nilai yang diperoleh

berupa angka (0-100). Buatlah program untuk mencari nilai rata-rata dengan menggunakan

bahasa pemrograman C/C++!

3. Buatlah program pendataan data mahasiswa dengan menggunakan tipe data record dengan

menggunakan bahasa pemrograman C/C++!

BAB II

4. Jika diketahui sebuah kalimat adalah sebagai berikut : TEKNIK INFORMATIKA JURUSAN FAVORIT.

Buatlah program dengan bahasa C/C++ untuk membalikan kalimat tersebut!

BAB IV

5. Carilah 2 metode sorting lainnya dan buat masing-masing Algoritma, Flowchart, dan program

dengan menggunakan bahasa C/C++!

6. Dengan menggunakan Algoritma (langkah-langkah) yang ada pada metode Pengurutan langsung

dan metode seleksi, buatlah

a. Flowchart system

b. Program untuk pengurutan data metode seleksi dan metode langsung dengan C/C++

7. Dari contoh Program sorting dengan metode bubble sort diatas dengan bahasa pascal, rubahlah

ke dalam bahasa pemrograman C/C++!

BAB V

8. Carilah 2 metode searching (pencarian) lainya dan buatlah masing-masing Algoritma, flowchart

dan programnya menggunakan bahasa C/C++!

9. Dengan menggunakan Algoritma (langkah-langkah) yang ada pada pencarian data, buatlah :

a. Flowchart metode seuqential searching dan metode binary searching

b. Program dan outputnya untuk metode sequential searching dan metode binary searching

dengan bahasa C/C++

Page 2: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

2

Tugas Struktur Data

= Jawab =

1. Program perkalian matriks :

Source Code :

#include <stdio.h>

#include <conio.h>

void main()

{ int A[3][4], B[3][4], X[3][4], i, j;

clrscr();

printf ("Perkalian Matriks (Ordo 2x2)\n");

printf ("----------------------------\n\n");

/******* Masukkan matriks A *******/

printf("Penetapan Nilai Matriks A\n");

for(i=0;i<2;i++)

{ for(j=0;j<2;j++)

{ printf("Baris ke - %i, Kolom ke - %i : ",i+1,j+1);

fflush(stdin);scanf("%i",&A[i][j]);

}

}

printf("\n");

/******** Masukkan matriks B ********/

printf("Penetapan Nilai Matriks B\n");

for(i=0;i<2;i++)

{ for(j=0;j<2;j++)

{ printf("Baris ke - %i, Kolom ke - %i : ",i+1,j+1);

fflush(stdin);scanf("%i",&B[i][j]);

}

}

/******** Proses perkalian matriks A dan B ********/

for(i=0;i<2;i++)

{ for(j=0;j<2;j++)

{ X[i][j]=(A[i][0]*B[0][j])+(A[i][1]*B[1][j]);

}

}

/******** Cetak hasil perkalian matriks A dan B *******/

printf("\nHasil perkalian matriks A dan B\n");

printf("\n");

for(i=0;i<2;i++)

{ for(j=0;j<2;j++)

printf("%6i",X[i][j]);printf("\n");

}

printf("\n\n");

getch();

}

Page 3: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

3

Tugas Struktur Data

Hasil output program :

2. Program untuk mencari nilai rata-rata :

Source Code :

#include <stdio.h>

#include <conio.h>

main()

{

int X[20][10];

float rata;

int i,j,jum,n,hasil_rata;

clrscr();

hasil_rata=0;

n = 5;

for (i=0;i<n;i++)

{

clrscr();

printf("Data Ke % d = \n",i+1);

puts("===========================");

printf("Mahasiswa ke ");scanf ("%4d", &X[i][0]);

jum=0;

for (j=1;j<8;j++)

{

printf("Nilai ke % d : ",j);scanf("%4d",&X[i][j]);

jum=jum+X[i][j];

}

rata=jum/7;

printf("====================+ \n");

printf("Jumlah = %4d\n",jum);

X[i][8]=rata;

printf("Rata-rata = %4d\n",X[i][8]);

Page 4: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

4

Tugas Struktur Data

X[i][j]=jum;

getch();

}

clrscr(); printf(" DAFTAR NILAI 7 MATA KULIAH DARI 5 MAHASISWA\n");

printf("----------------------------------------------------------------------------\n");

printf("No.Mhs | M.kul | M.kul | M.kul | M.kul | M.kul | M.kul | M.kul | Jlh | Rata2\n");

printf(" | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | \n");

printf("----------------------------------------------------------------------------\n");

for (i=0;i<n;i++)

{

printf(" \n");

for (j=0;j<=8;j++)

{

printf(" %d ",X[i][j]);

}

printf("%d ",X[i][8]/7);

hasil_rata=hasil_rata+(X[i][8]/7);

} printf("\n============================================================================");

return(0);

}

Hasil output programnya :

Page 5: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

5

Tugas Struktur Data

3. Program pendataan data mahasiswa dengan menggunakan tipe record :

Source Code :

#include <conio.h>

#include <string.h>

#include <stdio.h>

void main ()

{

struct data_mahasiswa

{

char nim [50], unit [60], nama[100], semester[10];

};

int i, n;

struct data_mahasiswa biodata[20];

clrscr();

printf(" ----------------- \n");

printf(" | DATA MAHASISWA |\n");

printf(" ----------------- \n\n");

printf ("Banyak Data : "); scanf ("%d", &n);

for (i=0;i<n;i++)

{

clrscr();

printf ("Data ke %d\n", i+1);

printf ("NIM : ");

fflush (stdin);scanf("%s", &biodata[i].nim);

printf ("NAMA : ");

fflush (stdin);scanf("%s", &biodata[i].nama);

printf ("UNIT : ");

fflush (stdin);scanf("%s", &biodata[i].unit);

printf ("SEMESTER : ");

fflush (stdin);scanf("%s", &biodata[i].semester);

}

printf("\n\n");

clrscr ();

printf(" ----------------- \n");

printf(" | DATA MAHASISWA |\n");

printf(" ----------------- \n\n");

printf ("NIM\t\tNAMA\t\tUNIT\tSEMESTER\n\n");

for (i=0;i<n;i++)

{

printf ("%s\t%s\t %s\t %s\n", biodata[i].nim,

biodata[i].nama, biodata[i].unit, biodata[i].semester);

}

getch();

}

Page 6: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

6

Tugas Struktur Data

Hasil output programnya :

4. Program membalikkan kalimat TEKNIK INFORMATIKA JURUSAN FAVORIT :

Source code :

#include<stdio.h>

#include <conio.h>

#include<string.h>

int MAXSTACK;

typedef char itemtype;

typedef struct

{

itemtype item[50];

int jmlh;

}

stack;

void inisialisasitumpukan(stack *c)

{

c->jmlh = 0;

}

void push(itemtype x, stack *s)

{

s->item[s->jmlh]=x;

++(s->jmlh);

}

int pop(stack *s)

{

Page 7: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

7

Tugas Struktur Data

--(s->jmlh);

return (s->item[s->jmlh]);

}

main()

{

int i;

char input[50] = "TEKNIK INFORMATIKA JURUSAN FAVORIT";

printf ("Kalimat yang akan dibalikkan : TEKNIK INFORMATIKA JURUSAN FAVORIT\n\n");

stack tumpukan;

inisialisasitumpukan(&tumpukan);

MAXSTACK=strlen(input);

for(i=0;i<MAXSTACK;i++)

{

push(input[i],&tumpukan);

}

printf ("Hasil membalikkan dengan operasi stack : \n");

gotoxy(42,3);

for(i=MAXSTACK;i>0;i--)

{

printf("%c", pop(&tumpukan));

}

return (0);

}

Page 8: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

8

Tugas Struktur Data

5. 2 metode sorting lainnya :

1. Metode merge sort :

Algoritma :

Data yang akan diurutkan dibagi ke dalam dua kumpulan data yaitu kumpulan pertama

terdiri dari Data[0] sampai dengan Data[4] dan kumpulan kedua terdiri dari Data[5] sampai

dengan Data[9].

Ditentukan batas kiri L mulai 0 dari kumpulan pertama dan dicari data terkecil setelah data

ke 0 yaitu 9 pada batas kanan M=2 kemudian diurutkan.

Nilai L=M dan M ditentukan dengan posisi data yang lebih kecil dari data pada posisi L

kemudian diurutkan.

Proses dilakukan sampai kumpulan pertama terurut.

Hal yang sama dilakukan terhadap kumpulan kedua sampai data pada kumpulan kedua

terurut

Langkah terakhir mengurutkan keseluruhan data dari kumpulan pertama dan kedua yang

sudah terurut.

Page 9: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

9

Tugas Struktur Data

Flowchart :

Mulai

Input data

Int data[],x;

X = data[]/2

Pengurutan

Ascending untuk x1

Pengurutan

Ascending untuk x2

Pengurutan

Ascending dari x1

dan x2

Tampilkan hasil

pengurutan

Selesai

Page 10: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

10

Tugas Struktur Data

Program metode merge sorting : Source kode : #include <stdio.h>

#define MAX 10

int Data[MAX];

int temp[MAX];

// Prosedur merge sort

void merge(int Data[], int temp[], int kiri, int tengah, int

kanan)

{

int i, left_end, num_elements, tmp_pos;

left_end = tengah - 1;

tmp_pos = kiri;

num_elements = kanan - kiri + 1;

while ((kiri <= left_end) && (tengah <= kanan))

{

if (Data[kiri] <= Data[tengah])

{

temp[tmp_pos] = Data[kiri];

tmp_pos = tmp_pos + 1;

kiri = kiri +1;

}

else

{

temp[tmp_pos] = Data[tengah];

tmp_pos = tmp_pos + 1;

tengah = tengah + 1;

}

}

while (kiri <= left_end)

{

temp[tmp_pos] = Data[kiri];

kiri = kiri + 1;

tmp_pos = tmp_pos + 1;

}

while (tengah <= kanan)

{

temp[tmp_pos] = Data[tengah];

tengah = tengah + 1;

tmp_pos = tmp_pos + 1;

}

for (i=0; i <= num_elements; i++)

{

Data[kanan] = temp[kanan];

kanan = kanan - 1;

}

}

// Prosedur membuat kumpulan data

void m_sort(int Data[], int temp[], int kiri, int kanan)

{

Page 11: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

11

Tugas Struktur Data

int tengah;

if (kanan > kiri)

{

tengah = (kanan + kiri) / 2;

m_sort(Data, temp, kiri, tengah);

m_sort(Data, temp, tengah+1, kanan);

merge(Data, temp, kiri, tengah+1, kanan);

}

}

void mergeSort(int Data[], int temp[], int array_size)

{

m_sort(Data, temp, 0, array_size - 1);

}

int main()

{

int i;

printf("Masukkan DATA SEBELUM TERURUT : \n");

for (i = 0; i < MAX; i++)

{

printf ("Data ke %i : ", i+1);

scanf ("%d", &Data[i]);

}

mergeSort(Data, temp, MAX);

printf("\nDATA SETELAH TERURUT : ");

for (i = 0; i < MAX; i++)

printf("%d ", Data[i]);

printf("\n");

return(0);

}

Hasil output programnya :

Page 12: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

12

Tugas Struktur Data

Metode Quick Sort Non Rekursif

Algoritma :

L dan R menunjukkan data nilai tumpukan teratas pada tumpukan kiri dan kanan. tumpukan Mula-mula L=0 dan R=9 dan pivot adalah pada data ke-4 yaitu 3. Kita mencari data di sebelah kiri pivot yang lebih besar daripada 3, ternyata data ke-0 yaitu 12 lebih besar daripada 3. Untuk data di sebelah kanan pivot, ternyata tidak ada data yang lebih kecil daripada 3, yang berarti 3 adalah data terkecil, sehingga dilakukan pertukaran.

Kemudian dibuat dua kumpulan data baru berdasarkan hasil ini. Kumpulan data pertama adalah data yang memiliki indeks 0 s/d 4-0=4 dan kumpulan data kedua adalah data yang memiliki indeks 0 + 1 = 1 s/d 9. Kumpulan data kedua ini belum bisa ditentukan sekarang karena masih tergantung dari hasil pengurutan kumpulan data pertama.

Kembali ke kumpulan data pertama, dicari pivot kemudian menggunakan aturan yang serupa. Pivot pada kumpulan data ini adalah data ke-2 yaitu 9. Ternyata terdapat data yang lebih besar dari 9 di sebelah kiri yaitu 35 sehingga dilakukan pertukaran

Langkah selanjutnya membuat dua kumpulan data lagi. Kumpulan pertama mempunyai indeks 0 sampai dengan 4-1=3. Pivot dari kumpulan data ini adalah 9. Perhatikan tidak ada data yang lebih besar dari 9 di sebelah kiri dan lebih kecil dari 9 di sebelah kanan. Kumpulan kedua dari indeks 0 s/d 4 adalah data ke 2 dan ke 4-1=3 yaitu 35 dan 11. Ternyata 35 lebih besar dari 11 sehingga kedua data ini ditukar.

Kembali ke kumpulan data kedua yang memiliki indeks 1 s/d 9. Kumpulan ini dibagi menjadi dua yaitu kumpulan data berindeks 1 s/d 4 dan kumpulan data berindeks 5 s/d 9. Pivot dari data ini adalah data ke 5 yaitu 17. Data yang lebih besar dari 17 di sebelah kiri adalah 35 dan data yang lebih kecil dari 17 di sebelah kanan adalah 15, jadi kedua data ini ditukar.

Dari hasil penukaran ini dilakukan pembagian menjadi 2 kumpulan data. Kumpulan pertama yaitu dari indeks 2 s/d 4, pivot pada data ke 3 dan terjadi penukaran data 15 dan 12. Kumpulan kedua yaitu dari indeks 4 s/d 5 tidak terjadi pertukaran data Kembali ke kumpulan kedua dari indeks 5 s/d 9. Pivot dari kumpulan ini adalah 35. Dicari data yang lebih besar dari 35 di sebelah kiri dan data yang lebih kecil dari 35 di sebelah kanan. Ternyata terjadi pertukaran data 35 dan 20. Dari hasil pertukaran ini dilakukan pembagian kumpulan data yaitu data yang mempunyai indeks 6 s/d 7 dan 8 s/d 9. Kumpulan data pertama terjadi pertukaran data 23 dan 20 sedangkan kumpulan data kedua tidak terjadi pertukaran data

Page 13: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

13

Tugas Struktur Data

- Flowchart metode Quic Sort non rekursif

Mulai

Input data

Int data[],x;

X = data[]/2

Pengurutan

Ascending untuk x1

Pengurutan

Ascending untuk x2

Pengurutan

Ascending dari x1

dan x2

Tampilkan hasil

pengurutan

Selesai

Page 14: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

14

Tugas Struktur Data

- Program metode quick sort non rekursif :

Source Code :

#include <stdio.h>

#define MAX 11

#define MaxStack 11

int Data[MAX];

// Prosedur menukar data

void Tukar (int *a, int *b)

{

int temp;

temp = *a;

*a = *b;

*b = temp;

}

// Prosedur pengurutan metode Quick Sort

void QuickSortNonRekursif()

{

struct tump {

int Kiri;

int Kanan;

}Tumpukan[MaxStack];

int i, j, L, R, x, ujung = 1;

Tumpukan[1].Kiri = 0;

Tumpukan[1].Kanan = MAX-1;

while (ujung!=0){

L = Tumpukan[ujung].Kiri;

R = Tumpukan[ujung].Kanan;

ujung--;

while(R > L){

i = L;

j = R;

x = Data[(L+R)/2];

while(i <= j){

while(Data[i] < x)

i++;

while(x < Data[j])

j--;

if(i <= j){

Tukar(&Data[i], &Data[j]);

i++;

j--;

}

}

if(L < i){

ujung++;

Tumpukan[ujung].Kiri = i;

Page 15: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

15

Tugas Struktur Data

Tumpukan[ujung].Kanan = R;

}

R = j;

}

}

}

void main()

{

int i;

//Memasukkan data yang belum terurut

printf("DATA SEBELUM TERURUT : \n");

for(i=1; i<MAX; i++)

{

printf("Data ke %d : ", i);

scanf ("%d", &Data[i]);

}

QuickSortNonRekursif();

// Data setelah terurut

printf("\nDATA SETELAH TERURUT");

for(i=1; i<MAX; i++)

{

printf("\nData ke %d : %d ", i, Data[i]);

}

}

Hasil Output Programnya :

Page 16: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

16

Tugas Struktur Data

6. a. Flowchart

Flowchart Metode pengurutan langsung :

Mulai

Input data (A)

Int A, J,T;

Tampilkan hasil

pengurutan (A)

Selesai

T=A[i] A[0]=T J=J-1

if T<A[j]

A[J+1]=A[J] J-J-1

A[J+1]=T

Page 17: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

17

Tugas Struktur Data

Flowchart Metode pengurutan seleksi :

Mulai

Input data (A)

Int A, j,I,Lok;

Lok = l J=I+1

A[lok]>A[j]

Lok = j

A[lok]=A[I]

Selesai

Tampilkan hasil

pengurutan (A)

Page 18: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

18

Tugas Struktur Data

b. Program pengurutan data Metode seleksi dan metode langsung :

o Program Metode Langsung (insertion sort)

Source Code :

#include <stdio.h>

#include <stdlib.h>

#define MAX 11

int Data[MAX];

// Fungsi pengurutan penyisipan langsung

void StraightInsertSort()

{

int i,j,x;

for(i=1; i<MAX; i++){

x = Data[i];

j = i - 1;

while (x < Data[j]){

Data[j+1] = Data[j];

j--;

}

Data[j+1] = x;

}

}

int main()

{

int i;

srand(3);

// Membangkitkan bilangan acak

printf("DATA SEBELUM TERURUT");

for(i=1; i<MAX; i++)

{

Data[i] = (int) rand()/1000+1;

printf("\nData ke %d : %d ", i, Data[i]);

}

StraightInsertSort();

// Data setelah terurut

printf("\n\nDATA SETELAH TERURUT");

for(i=1; i<MAX; i++)

{

printf("\nData ke %i : %i ", i, Data[i]);

}

return(0);

}

Page 19: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

19

Tugas Struktur Data

Hasil ouptut programnya :

o Program Metode Seleksi (Selection sort)

Source Code :

#include <stdio.h>

#include <stdlib.h>

#define MAX 11

int Data[MAX];

// Fungsi pertukaran bilangan

void Tukar (int *a, int *b)

{

int temp;

temp = *a;

*a = *b;

*b = temp;

}

// Fungsi pengurutan metode seleksi

void SelectionSort()

{

int i, j, k;

for(i=1; i<MAX-1;i++){

k = i;

for (j=i+1; j<MAX; j++)

if(Data[k] > Data[j])

k = j;

Tukar(&Data[i], &Data[k]);

}

}

Page 20: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

20

Tugas Struktur Data

void main()

{

int i;

srand(6);

// Membangkitkan bilangan acak

printf("DATA SEBELUM TERURUT");

for(i=1; i<MAX; i++)

{

Data[i] = (int) rand()/1000+1;

printf("\nData ke %d : %d ", i, Data[i]);

}

SelectionSort();

// Data setelah terurut

printf("\n\nDATA SETELAH TERURUT");

for(i=1; i<MAX; i++)

{

printf("\nData ke %d : %d ", i, Data[i]);

}

}

Hasil output programnya :

Page 21: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

21

Tugas Struktur Data

7. Program Metode Bubble Sort dari bahasa Pascal ke Bahasa C++

Source Code :

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#define MAX 10

int Data[MAX];

int i;

void masukkan ()

{

printf ("Masukkan data sebanyak 10 : \n\n");

for (i=1; i<MAX; i++)

{

printf("Data ke %d : ", i);

scanf("%d", &Data[i]);

}

clrscr();

for (i=1; i<MAX; i++)

{

printf("%d ", Data[i]);

}

}

void Tukar (int *a, int *b)

{

int temp;

temp = *a;

*a = *b;

*b = temp;

}

void BubbleSort()

{

int j;

for(i=1; i<MAX-1; i++)

for(j=MAX-1; j>=i; j--)

if(Data[j-1] > Data[j])

Tukar(&Data[j-1], &Data[j]);

}

void keluaran ()

{

printf ("\n");

printf ("-----------------------------------\n");

printf ("Data yang telah diurutkan : \n\n");

printf ("Ascending : ");

Page 22: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

22

Tugas Struktur Data

for (i=1; i<MAX; i++)

{

printf("%d ", Data[i]);

}

}

int main()

{

masukkan();

BubbleSort();

keluaran();

return(0);

}

Hasil output programnya :

8. 2 metode searching lainnya :

Interpolation search :

Algoritma :

- Baca vektor yang akan diketahui, misalnya vektor A dengan N buah elemen dan urutkan

secara naik (Ascending)

- Baca elemen yang akan dicari, misalnya data

- Inisialisasi

Tentukan tm=0, High = N dan Low = 0

- Gunakan rumus

Posisi = (data – A[low] / A[high] –A[low] ) * ( high – low ) + low

- Ketika data >= A[low] dan data<= A[high] lakukan

Jika A[posisi] = data maka tm+1

Jika A[posisi] > data maka high = posisi - 1

Jika A[posisi] < data maka low = posisi + 1

- Jika tm > 0 maka data ditemukan

- Selesai

Page 23: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

23

Tugas Struktur Data

Program metode interpolation search

Source code : #include<stdio.h>

#include <conio.h>

void main()

{

//deklarasi variable

int A[10], i,j,k,tkr,low,high,pos,tm;

//proses penginputan data

for(i=0;i<10;i++)

{

printf("data ke-%d:",i+1);

scanf("%d",&A[i]);

}

//Input data yang akan dicari

clrscr();

printf("Masukkan data yang akan anda cari:");

scanf("%d",&k);

//proses pengurutan data

for(i=0;i<10;i++)

{

for(j=i+1;j<10;j++)

{

if (A[i]>A[j])

{

tkr=A[i];

A[i]=A[j];

A[j]=tkr;

}

}

}

//proses pencarian data

tm=0;

high=9;

low=0;

do

{

pos = ((k - A[low]) / (A[high] - A[low]))*(high-low) +

low;

if (A[pos] == k)

{

tm++;

break;

}

if (A[pos] > k)

high = pos-1;

else

if (A[pos] < k)

low = pos + 1;

}

while(k >= A[low] && k <= A[high]);

if (tm>0)

{

printf("data %d yang dicari ada dalam array\n",k);

Page 24: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

24

Tugas Struktur Data

}

//jika tidak ditemukan

else

{

printf("data tidak ditemukan dalam array\n");

}

Hasil output programnya :

Metode pencarian dengan sentinel : Algoritma :

- Baca vektor yang akan diketahui, misalnya vektor array dengan n elemen - Baca data yang akan dicari, misalnya x - Inisialisasi i = 0 - Test apakah array[i] tidak sama dengan x - Jika tidak maka i +1 - Jika i < N maka data ditemukan Program metode pencarian sentinel : Source Code : # include <conio.h>

# include <stdio.h>

# include <math.h>

void main()

{

int array[]={9,23,90,8,52,3,4,5}, i=0,x;

printf ("masukkan data yang akan dicari ");

scanf ("%d", &x);

array[8]=x;

i=0;

while(array[i]!=x)

i++;

if (i<8)

{

printf("Data ditemukan");

}

else

printf ("data tidak ditemukan");

getch();

}

Page 25: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

25

Tugas Struktur Data

Hasil output programnya : Flowchart Metode interpolation search dan metode sequential dengan sentinel search - Flowchart metode interpolation search

Mulai

Input data (X)

Int array[],N,ix;

i =0;

If array[i]!=x

I<N

i+1

Data ketemu

Selesai

Page 26: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

26

Tugas Struktur Data

Flowchart metode interpolation search :

Mulai

Input data dicari

(A)

Int A,high,low,

N,pos;

Tm=0, Low =0 High=N

Pos=(A-x[low]/A[high]-

A[low])*(high-low)+low

If A>=x[low] &&

A<=A[high]

If tm = 0

Cetak hasil

Selesai

If [pos] = A

If [pos] > A

If [pos] < A

Tm + 1

High =pos-1

Low=pos + 1

Page 27: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

27

Tugas Struktur Data

Program metode sequential search : Source Code : #include <iostream.h>

#include<stdio.h>

void main()

{

int data[8] = {8,10,6,-2,11,7,1,100};

int cari;

int tanda=0;

cout<<"masukkan data yang ingin dicari = "; cin>>cari;

for(int i=0;i<8;i++){

if(data[i] == cari) tanda=1;

}

if(tanda==1) cout<<"Data ada!\n";

else cout<<"Data tidak ada!\n";

} Hasil output programnya :

Program metode Binary search : Source Code : #include<stdio.h>

void main()

{

//deklarasi variabel

int A[10] = {6,47,9,12,3,9,5,19,2,1};

int i,j,k,tkr,top,bottom,middle,tm;

printf("Masukkan data yang akan anda cari:");

scanf("%d",&k);

for(i=0;i<10;i++)

{

for(j=i+1;j<10;j++)

{if (A[i]>A[j])

{tkr=A[i];

A[i]=A[j];

A[j]=tkr;

}

}

}

//proses pencarian data

tm=0;

top=9;

bottom=0;

while(top>=bottom)

{

middle=(top+bottom)/2;

if(A[middle]==k)

{tm++;

}

Page 28: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

28

Tugas Struktur Data

if(A[middle]<k)

{bottom=middle+1;

}

else

{top=middle-1;

}

}

if (tm>0)

{ printf("Data %d ditemukan\n",k);

}

else

{ printf("Data %d tidak ditemukan \n", k); }

}

Hasil output program : Flowchart Metode Sequential Search :

Mulai

Input data (X)

Int array[],N,ix;

i =0;

If array[i]!=x

Data ketemu

Selesai

Page 29: Tugas Struktur Data

Muhammad Fauzi & Reiza Pahalwan

29

Tugas Struktur Data

Flowchart Metode Binary Search :

Mulai

Input data (A)

Int atas,bawah,

N,T,A;

Atas=N, Bawah = 1

If

atas>=bawah

T=atas+bawah/2

A[T]

Data ketemu

Selesai