TUGAS STRUKTUR DATA 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
procedure create_abjad (output abjad : larik, input maks_abjad : integer ) I.S = user memasukkan nilai bertipe integer F.S = menampilkan abjad i : integer for i 1 to maks_abjad do abjad procedure isi_abjad ( I/O abjad : larik, output n : integer ) I.S = user mamaskukn jumlah karakter dan memasukan karakter F.S = menampilkan nilai abjad i : integer Input (n) for i 1 to n do input ( abjad (n)) 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 i : integer min abjad (1) for i 1 to n do if ( abjad (i) min ) then min abjad (i) endif 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 i : integer
min abjad (1) for i 1 to n do if ( abjad (i) max ) then max abjad (i) endif procedure binary_search(input abjad : larik, n : integer, input x : char) I.S = elemen abjad sudah terdefinisi F.S = menghasilkan pencarian bagi dua k, ia, ib : integer ketemu : bolean 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 procedure shortshell(input abjad : larik, n : integer) I.S = elemen abjad sudah terdefinisi
F.S = menghasilkan pengurutan shell sort j,i,k,m,n,mid : integer 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) endif abjad(i+m) mid 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 i, : integer output ( Array Before Sorting ) output ( ) for i 1 to n do output ( abjad (i)) shellsort(abjad,n); output ( Array After Before Sorting ) output ( ) for i 1 to n do output ( abjad (i)) output ( ) output (min, max) output ( )
procedure destroy_abjad(i/o abjad : larik, n : integer) I.S = elemen-elemen sudah terdefinisi F.S = menghasilkan penhancuran elemen i, : integer for i 1 to n do create_abjad(abjad,maks_abjad) exit 0 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 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) 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 <conio2.h> 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<n; i++) if ( abjad[i] <= *min) *min=abjad[i]; void abjad_terbesar(larik abjad, char *max, int n) int i; *max=abjad[0]; for (i=1; i<n; i++) if ( abjad[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<n; i++) printf(" Abjad ke %i : %c \n", i+1, abjad[i]); shellsort(abjad,n); printf("\n Array After Sorting \n"); printf(" \n\n"); for(i=0;i<n ;i++) printf(" Abjad ke %i : %c \n", i+1, abjad[i]); printf(" \n\n"); printf(" Abjad Terkecil : %c \n", min); printf(" Abjad Terbesar : %c \n", max); printf(" \n\n"); void destroy_abjad(larik abjad,int n) create_abjad(abjad,maks_abjad); void menu(void) main() 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 : "); larik abjad; char max,min,x; int i, n,tekan; do menu(); tekan=getch();
switch(tekan) case '1' : isi_abjad(abjad, &n); getch(); break; case '2' : binarysearch(abjad,n,x); getch(); break; case '3' : abjad_terkecil(abjad, &max, n); abjad_terbesar(abjad, &min, n); tampil(abjad, max, min, n); getch(); break; case '4' : 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.