Senin, 30 Maret 2015

Contoh Program Pengurutan (Selection Sort)



uses crt;
type mhs=record
     nama, nim:string;
     ipk:real;
end;

var data :array [1..10] of mhs;
    nama1, nim1:string;
    ipk1:real;
    i, j, n, rank, temp:integer;
    plh :string;

procedure input;
begin
clrscr;
  write('Masukkan Jumlah Data : ');readln(n);
  for i:=1 to n do
  begin
   with data[i] do
   begin
    writeln('Mahasiswa [',i,'] : ');
    write('Nama  : ');readln(nama);
    write('NIM   : ');readln(nim);
    write('IPK   : ');readln(ipk);
    writeln;
   end;
  end;
readkey;
end;

procedure output;
begin
clrscr;
  writeln('|=======================================================|');
  writeln('|                 DATA NILAI MAHASISWA                  |');
  writeln('|====|==========================|===========|===========|');
  writeln('| No |         Nama             |    NIM    |    IPK    |');
  writeln('|====|==========================|===========|===========|');
  for i:=1 to n do
  begin
  with data[i] do
  begin
  gotoxy(1,5+i);writeln('|    |                          |           |           |');
  gotoxy(3,5+i);writeln(i);
  gotoxy(8,5+i);writeln(nama);
  gotoxy(35,5+i);writeln(nim);
  gotoxy(50,5+i);writeln(ipk:2:2);
  end;
  end;
  writeln('|====|=========================|===========|============|');
readkey;
end;


procedure urut;
begin
 for i:=1 to n-1 do
  begin
   for j:=i+1 to n do
    begin
    if(data[j].ipk > data[i].ipk) then
     begin
      nama1:= data[j].nama;
      data[j].nama:= data[i].nama;
      data[i].nama:=nama1;
      nim1:=data[j].nim;
      data[j].nim:=data[i].nim;
      data[i].nim:=nim1;
      ipk1:=data[j].ipk;
      data[j].ipk:=data[i].ipk;
      data[i].ipk:=ipk1;
     end;
    end;
   end;
end;


procedure output2;
begin
urut;
clrscr;
  writeln('|========================================================|');
  writeln('|                  DATA NILAI MAHASISWA                  |');
  writeln('|====|==========================|===========|============|');
  writeln('| No |         Nama             |    NIM    |    IPK     |');
  writeln('|====|==========================|===========|============|');
  for i:=1 to n do
  begin
  with data[i] do
  begin
  gotoxy(1,5+i);writeln('|    |                          |           |           |');
  gotoxy(3,5+i);writeln(i);
  gotoxy(8,5+i);writeln(nama);
  gotoxy(35,5+i);writeln(nim);
  gotoxy(50,5+i);writeln(ipk:2:2);
  end;
  end;
  writeln('|====|=========================|===========|============|');
readkey;
end;

begin
repeat
clrscr;
  writeln('|========================================|');
  writeln('|               MENU UTAMA               |');
  writeln('|========================================|');
  writeln('| [1] Input data                         |');
  writeln('| [2] Tampilkan data yg belum diurutkan  |');
  writeln('| [3] Tampilkan data yg sudah diurutkan  |');
  writeln('| [0] Keluar                             |');
  writeln('|========================================|');
  writeln('| Pilihan    :                           |');
  writeln('|========================================|');
  gotoxy(17,9);readln(plh);

  case plh of
   '1' : input;
   '2' : output;
   '3' : output2;
   '0' : exit;
  end;
until plh='0';
end.


Screenshoot :








Sekian Terima kasih, semoga bermanfaat.





Tidak ada komentar:

Posting Komentar