TUGAS STRUKTUR DATA
Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C
IF-5 Nama Anggota : - Rohendi
10107193
- Andri Andriyan
10107210
- Yuli Yanti A
10107218
- Jajang Kusmita
10107227
JURUSAN TEKNIK INFORMATIKA FAKULTAS TEKNIK DAN ILMU KOMPUTER UNIVERSITAS KOMPUTER INDONESIA 2009
Algoritma procedure create_abjad (output abjad : larik, input maks_abjad : integer ) { I.S = user memasukkan nilai bertipe integer } { F.S = menampilkan abjad } Kamus i : integer Algoritma for i 1 to maks_abjad do abjad endfor endprocedure procedure isi_abjad ( I/O abjad : larik, output n : integer ) { I.S = user mamaskukn jumlah karakter dan memasukan karakter } { F.S = menampilkan nilai abjad } Kamus i : integer Algoritma Input (n) for i 1 to n do input ( abjad (n)) endfor endprocedure procedure abjad_terkecil ( I/O abjad: larik, input n: integer, output min: integer) { I.S = harga untuk variabel abjad sudah terdefinisi} { F.S = mencari abjad terkecil} Kamus i : integer Algoritma min abjad (1) for i 1 to n do if ( abjad (i) min ) then min abjad (i) endif endfor endprocedure procedure abjad_terbesar ( I/O abjad: larik, input n : integer, output max integer) { I.S = harga untuk variabel abjad sudah terdefinisi } { F.S = mencari abjad terbesar} Kamus i : integer
Algoritma min abjad (1) for i 1 to n do if ( abjad (i) max ) then max abjad (i) endif endfor endprocedure procedure binary_search(input abjad : larik, n : integer, input x : char) { I.S = elemen abjad sudah terdefinisi } { F.S = menghasilkan pencarian bagi dua} Kamus k, ia, ib : integer ketemu : bolean Algoritma ia 0 ib n-1 ketemu false while ( not ketemu ) and (ia ib) do k (ia + ib ) div 2 if ( x = abjad(k)) then ketemu true else if (x > abjad(k)) then ia k+1 else ib k-1 endif endif endwhile if ( ketemu = 1 ) then output( Data yang dicari : , x ) output ( ada pada indeks ke . k+1 ) else output ( data tidak ditemukan ) endif endprocedure procedure shortShell(input abjad : larik, n : integer) { I.S = elemen abjad sudah terdefinisi }
{ F.S = menghasilkan pengurutan shell sort} Kamus j,i,k,m,n ,mid : integer Algoritma j 0 for m n div 2 to 0 do m mod 2 for j m to n do j j+1 for i j-m to 0 do i i-m if (abjad(i+m) >= abjad(i)) then mid abjad(i) abjad(i) abjad(i+m) abjad(i+m) mid endif endfor endfor endfor endprocedure procedure tampil_abjad (input abjad : larik, n : integer, input max, min : char) { I.S = harga untuk variable max dan min sudah terdefinisi } { F.S = menampilkan abjad terendah dan abjad tertinggi} Kamus i, : integer Algoritma output ( Array Before Sorting ) output ( __________________ ) for i 1 to n do output ( abjad (i)) endfor shellsort(abjad,n); output ( Array After Before Sorting ) output ( __________________ ) for i 1 to n do output ( abjad (i)) endfor output ( __________________ ) output (min, max) output ( __________________ ) endprocedure
procedure destroy_abjad(I/O abjad : larik, n : integer) { I.S = elemen-elemen sudah terdefinisi } { F.S = menghasilkan penhancuran elemen} Kamus i, : integer Algoritma for i
1 to n do create_abjad(abjad,maks_abjad) exit 0 endfor endprocedure { Algoritma Utama } Array_abjad { I.S = user memasukan sejumlah abjad bertipe karakter} { F.S = memampilkan abjad dimasukan oleh user dan menampilkan abjad terendah dan abjad tertinggi } Kamus Const Maks_abjad : 50 Type Larik : array [1..maks_abjad] of char abjad : larik n , i, tekan, : integer max, min, x : char procedure create-abjad (output abjad : larik, input maks_abjad : integer ) procedure isi_abjad ( I/O abjad : larik, output n : integer ) procedure abjad_terendah ( I/O abjad:larik, input n: integer, output min:integer) procedure abjad_tertinggi ( I/O abjad: larik, input n:integer, output max integer) procedure binary_search(input abjad : larik, n : integer, input x : char) procedure shortShell(input abjad : larik, n : integer) procedure tampil_abjad (input abjad : larik, n : integer, input max, min : char) procedure destroy_abjad(I/O abjad : larik, n : integer) Algoritma repeat output(" Menu Pilihan") output ("___________________") output (" 1. Isi Data ") output (" 2. Cari Data ")
output (" 3. Tampil Data ") output (" 0. Keluar ") output ("___________________") output (" Masukkan pilihan anda : ") input (menu) case(tekan) '1' : isi_abjad(abjad, n) '2' : binarySearch(abjad,n,x) '3' : abjad_terkecil(abjad, max, n) abjad_terbesar(abjad, min, n) tampil(abjad, max, min, n) '0' : destroy_abjad(abjad, n) until (tekan 0) Source Code #include <stdio.h> #include <stdlib.h> #include
const int maks_abjad=50; typedef char larik [maks_abjad]; void create_abjad(larik abjad, int maks_abjad); void isi_abjad(larik abjad, int *n); void abjad_terkecil(larik abjad, char *min, int n); void abjad_terbesar(larik abjad, char *max, int n); void binarySearch(larik abjad, int n, char x); void shellsort(larik abjad,int n); void tampil(larik abjad, char min, char max, int n); void destroy_abjad(larik abjad,int n);
void create_abjad(larik abjad, int maks_abjad) { int i; for (i=0; i<maks_abjad; i++) { abjad[i]=' '; } } void isi_abjad(larik abjad, int *n) { int i; printf("\n Masukkan banyak abjad : ");scanf("%i", n); for (i=0; i<*n; i++)
{ printf ("\n Abjad ke-%i : ",i+1);abjad[i]=getche(); } } void abjad_terkecil(larik abjad, char *min, int n) { int i; *min=abjad[0]; for (i=1; i= *max) { *max=abjad[i]; } } } void binarySearch(larik abjad, int n, char x) { int ia,ib,k; int ketemu; ia = 0; ib = n-1; ketemu = 0; printf("\n Data cari : "); x = getche(); while (!ketemu && ia <= ib) { k=(ia+ib)/2; if (x == abjad[k]) { ketemu=1; } else if (x > abjad[k])
{ ia = k + 1; } else { ib = k - 1; } } if (ketemu==1) { printf(" \n\n Data Ditemukan \n "); printf(" ada pada indeks ke %i \n", k+1); } else { printf(" \n\n data tidak ditemukan"); } } void shellsort(larik abjad,int n) { int j,i,k,m,mid; for(m = n/2;m>0;m/=2) { for(j = m;j< n;j++) { for(i=j-m;i>=0;i-=m) { if(abjad[i+m]>=abjad[i]) break; else { mid = abjad[i]; abjad[i] = abjad[i+m]; abjad[i+m] = mid; } } } } } void tampil(larik abjad, char min, char max, int n) { int i; printf("\n Array Befor Sorting \n"); printf(" _____________________\n\n");
for (i=0; i
} void destroy_abjad(larik abjad,int n){ create_abjad(abjad,maks_abjad); } void menu(void) { gotoxy(2,2);printf(" Menu Pilihan"); gotoxy(2,3);printf("___________________"); gotoxy(2,5);printf(" 1. Isi Data "); gotoxy(2,6);printf(" 2. Cari Data "); gotoxy(2,7);printf(" 3. Tampil Data "); gotoxy(2,8);printf(" 0. Keluar \n"); gotoxy(2,9);printf("___________________"); gotoxy(2,11);printf(" Masukkan pilihan anda : "); } main() { larik abjad; char max,min,x; int i, n,tekan; do { menu(); tekan=getch();
switch(tekan) { case '1' : clrscr(); isi_abjad(abjad, &n); getch(); clrscr(); break; case '2' : clrscr(); binarySearch(abjad,n,x); getch(); clrscr(); break; case '3' : clrscr(); abjad_terkecil(abjad, &max, n); abjad_terbesar(abjad, &min, n); tampil(abjad, max, min, n); getch(); clrscr(); break; case '4' : clrscr(); destroy_abjad(abjad, n); } } while(tekan !='0'); } Tampilan Tampilan Depan
Tampilan Isi Data
Tampilan Data Cari
Tampilan Data, Mencari Abjad Tertiggi, Terendah Dan Pengurutan
KONTRIBUSI MASING - MASING ANGGOTA - Rohendi
(10107193) : Mengedit dan membuat tampilan program.
- Andri Andriyan
(10107210) : Membuat program, ide program, dan membuat tampilan program.
- Yuli Yanti A
(10107218) : Mengedit algoritma, mengumpulkan referensi, mencetak .
- Jajang Kusmita
(10107227) : Membuat algoritma mengumpulkan referensi. ngeprint, penyedia komputer
.
This document was created with Win2PDF available at http://www.daneprairie.com. The unregistered version of Win2PDF is for evaluation or non-commercial use only.