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 forj 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 <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) {
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.