23/12/11

Program Pascal Pencarian ( Searching )

program pencarian;
uses crt;
label z,g,f,h;
const mak = 100;
type pegawai = record
nomor : integer;
nama : string [30];
bagian : string [20];
gaji : integer;
end;


tabel = array [1..mak] of pegawai;
var
a:tabel;
n:integer;
ni:integer;
i,j,temp:integer;
p:char;
pilih:integer;

procedure mencari (a:tabel;n:integer;x:integer;var isearch:integer);
var
i : integer;
begin
     if(n=0) then isearch := 0 else
     begin
          i:=1;
          while((a[i].nomor<x) and (i<n)) do
           i := i+1;
           if (a[i].nomor = x) then
             begin
                  writeln('Data yang dicari :');
                  writeln('Nomor Pegawai :',a[i].Nomor);
                  writeln('Nama Pegawai :',a[i].nama);
                  writeln('Bagian :',a[i].bagian);
                  writeln('Gaji :',a[i].gaji);
             end
             else
             writeln('Data Tidak Berhasil Ditemukan --*.*;');
     end;
end;

procedure Biner (a:tabel;n:integer;x:integer;var isearch:integer);
var
   bawah, atas, tengah:integer;
   found : boolean;
   begin
   if (n=0) then isearch := 0 else
   begin
      bawah := 1;
      atas := n;
      found := false;
      while ((not found) and (atas >= bawah)) do
      begin
          tengah := (bawah + atas) div 2;
          if (a[tengah].nomor=x) then  found := true
          else if (a[tengah].nomor>x) then atas := tengah -1
          else bawah := tengah+1;
   end;
   if found then begin
      isearch := tengah;
      writeln('Data yang dicari :');
      writeln('Nomor Pegawai : ',a[i].nomor);
      writeln('Nama Pegawai : ',a[i].nama);
      writeln('Bagian : ',a[i].bagian);
      writeln('Gaji : ',a[i].gaji);
   end
   else writeln('Data tidak ditemukan???');
   end;
end;

 begin
 h : clrscr; writeln;
 gotoxy(20,2);writeln('----PROGRAM SEARCHING MODUL 7----');
 gotoxy(20,3);writeln('-----priliawan.blogspot.com------');writeln;writeln;
 write('Banyaknya Database Pegawai:');readln(n);
 writeln;
 for i:= 1 to n do
 begin
     write('Nomor pegawai ke-',i,':');readln(a[i].nomor);
     write('Nama Pegawai ke-',i,' :');readln(a[i].nama);
     write('Bagian ke-',i,':');readln(a[i].bagian);
     write('Gaji ke-',i,':');readln(a[i].gaji);
     writeln;
     end;
     
     z:
     writeln;
     writeln('--Menu Pilihan Pencarian--');
     writeln('1. Pencarian Skuensial');
     writeln('2. Pencarian Biner');
     writeln('3. Exit');
     write('Pilihan :');readln(pilih);writeln('-----------------');writeln;
     
     case pilih of
     
     1 : begin
     g:
     writeln;
     writeln('--Pencarian Skuensial--');
     writeln;
     for i:= 1 to n do begin
         with a[i] do begin
         writeln('No     : ',nomor);
         writeln('Nama   : ',nama);
         writeln('Bagian : ',bagian);
         writeln('Gaji   : ',gaji);
         writeln;
         end;
     end;

         for i:= 1 to n-1 do
         begin
              for j:= 1 to n-i do
              begin
                 if (a[j].nomor)>(a[j+1].nomor)then
                   begin
                      temp:=a[j].nomor;
                      a[j].nomor:=a[j+1].nomor;
                      a[j+1].nomor:=temp;
                   end;
              end;
         end;
     
     writeln;
     write('Masukkan Nomor Pegawai yang akan di Searching : ');readln(ni);
     writeln;
     mencari(a,n,ni,i);
     writeln;
     write('Mencari Lagi(y/t) : ');readln(p);
     if (p='Y') or (p='y') then goto g;
        goto z;
        writeln;
     end;
     
     2 : begin
     f:
     writeln;writeln('--Pencarian Biner--');
     for i:= 1 to n-1 do
     begin
          for j:= 1 to n-i do
          begin
               if (a[j].nomor) > (a[j+1].nomor) then
               begin
                    temp:= a[j].nomor;
                    a[j].nomor := a[j+1].nomor;
                    a[j+1].nomor := temp;
               end;
          end;
     end;
     
     writeln('Masukkan Nomor Pegawai yang akan di searching : ');readln(ni);
     writeln;
     biner(a,n,ni,i);
     writeln;
     write('Ingin mencari lagi (y/t) : ');readln(p);
     if (p='Y') or (p='y') then goto f;
     goto z;
     writeln;
     end;
     
     3 : begin
     writeln ('Program Diakhiri (Good By)');
     writeln;
     end;
     else
     writeln('Pilihan Salah');
     for i:= 1 to n do delay(50000);
     goto h;
     end;
     readkey;
end.



karena ga bs copas jd klo mau download diSINI
hehehehe.....

Tidak ada komentar:

Posting Komentar