Senin, 23 April 2012

Program merge_sort; ( Struktur Data )


Program merge_sort;
uses crt;
const
  maks_array = 20;
type
  larik = array[1..maks_array] of integer;
var
  A      : larik;
  n,menu : integer;

procedure create(var A : larik; n : integer);
var
  i : integer;
begin
  n := 1;
  for i := 1 to n do
  begin
    A[i] := 0;
  end;
end;

procedure isi_data(var n : integer; var A : larik);
var
  i : integer;
begin
  write('Masukan Jumlah Elemen Array : ');readln(n);
  clrscr;
  for i := 1 to n do
  begin
   write('Elemen ke-',i,' = ');
   readln(A[i]);
  end;
end;

procedure tampil(n : integer;A : larik);
var
  i : integer;
begin
  gotoxy(3,1);write('Elemen Array');
  gotoxy(2,2);write('==============');
  for i := 1 to n do
  begin
    gotoxy(7,1+(i*2));write('|',A[i],'|');
    gotoxy(7,2+(i*2));write('---');
  end;
end;

Procedure binarysearch(N : Integer; A : Larik);
var
  Ia,Ib,k    : integer;
  Ketemu     : boolean;
  x          : integer;
begin
  {binary search untuk data terurut secara descending}
  write('Masukan angka yang akan dicari!');readln(x);
  Ia := 1;
  Ib := N;
  Ketemu  := false;
  while(not ketemu) and (Ia <= Ib) do
  begin
    k := (Ia + Ib) div 2;
    if (A[k] = x)
    then
      ketemu := true
    else
      if(A[k] > x)
      then
        Ia := k + 1
      else
        Ib := k - 1;
  end;
  if(ketemu)
  then
  begin
    clrscr;
    writeln('Angka ',x,' ditemukan pada indeks ke-',k);
    end
  else
    writeln(x,' Tidak ditemukan');
end;

begin
  repeat
  clrscr;
  gotoxy(30,2);writeln('Menu Pilihan');
  gotoxy(29,3);writeln('==============');
  gotoxy(25,5);writeln('1.Isi Elemen Array');
  gotoxy(25,6);writeln('2.Menampilkan Elemen Array');
  gotoxy(25,7);writeln('3.Mengurutkan Data Secara Descending');
  gotoxy(25,8);writeln('4.Mencari Elemen Array');
  gotoxy(25,9);writeln('5.Penghancuran Array');
  gotoxy(25,11);write('Silakan Memilih Menu! [1-5] ');readln(menu);
  {validasi menu pilihan}
  while(menu < 1) or (menu > 5) do
  begin
    gotoxy(25,13);
    write('Nomor tidak ada dalam Menu, tekan enter untuk mengulang!');
    readln;gotoxy(25,13);
    readln(menu);
  end;
  case (menu) of
  1 : begin
        clrscr;
        create(A,n);
        isi_data(n,A);
      end;

  2 : begin
        clrscr;
        if (n = 0)
          then
            write('Elemen array belum terdefinisi, isilah elemen array terlebih dahulu!')
          else
            tampil(n,A);
        readln;
      end;


  3 : begin
        clrscr;
        if (n = 0)
          then
            write('Elemen array belum terdefinisi, isilah elemen array terlebih dahulu!')
          else
            binarysearch(n,A);
        readln;
      end;


  4 : begin
        clrscr;
        if (n = 0)
          then
            write('Elemen array belum terdefinisi, isilah elemen array terlebih dahulu!')
          else
            binarysearch(n,A);
        readln;
      end;


  5 : begin
        clrscr;
        if (n = 0)
          then
            write('Elemen array belum terdefinisi, isilah elemen array terlebih dahulu!')
          else
            create(A,n);
        readln;
      end;
  end;
  until(menu=0);
end.

Tidak ada komentar:

Posting Komentar