Pages

Subscribe:

Saturday, July 18, 2009

Algoritma : Sort record

program sort_record ;

uses wincrt;

CONST MaxData = 100 ;

type Datasiswa = record

No_induk : integer;

Nama, jurusan,mtk : string[30];

semester : byte ;

nilai : record

uts,uas, tugas,quis,absen : real ;

end;

Nilai_akhir : real;

nilai_huruf : char;

end;

Daftar_siswa = Array[1..maxData] of DataSiswa ;

var siswa : daftar_siswa ;

jum_siswa : integer;

procedure baca_data_siswa;

var lagi : char;


function nilhuruf ( Nilai : real ) : char;

begin

if nilai >= 80 then

nilhuruf := 'A'

else if ( nilai <>=70) then

nilhuruf := 'B'

else if ( nilai <>=60) then

nilhuruf:= 'C'

else if ( nilai <>= 40 ) then

nilhuruf := 'D'

else

nilhuruf := 'E'

end;


begin


jum_siswa := 0;

repeat


jum_siswa := jum_siswa + 1;

with siswa [ jum_siswa ] do begin

writeln(' masukan data siswa : ');

write(' Nama Siswa : '); readln(nama);

write(' nomor induk : ');readln (no_induk);

write(' Jurusan : ' ); readln(jurusan) ;

write(' Mata Kuliah : '); readln(mtk);

write(' Semester : ' ); readln(semester);

writeln(' nilai-nilai ; ');

write(' tugas : '); readln(nilai.tugas);

write(' Quis : '); readln(nilai.quis);

write(' Nilai Absensi : '); readln(nilai.absen);

write(' nilai UTS : '); readln(nilai.uts);

write(' Nilai UAS : '); readln(nilai.uas);


nilai_akhir := 0.15* nilai.absen+ 0.15 * nilai.tugas+0.15*nilai.quis+ 0.25* nilai.uts + 0.3 * nilai.uas;

nilai_huruf := nilhuruf(nilai_akhir);

end;


write (' adakah data lagi (Y/T)? '); readln(lagi);


if jum_siswa + 1> maxData then begin

writeln('data telah maxsimal, segera akan durutkan ! ');

lagi := 'T'

end;


until upcase ( lagi ) = 'T';

end;


procedure urutDatasiswa ;

var i,j : integer ;

tampung : datasiswa ;

begin

for i := 1 to jum_siswa -1 do

for j:= 1 + 1 to jum_siswa do

if siswa[i].nilai_huruf <>

tampung := siswa[i];

siswa[i] := siswa[j];

siswa[j]:= tampung ;

end;

end;


procedure cetakdatasiswa;

var i : integer ;

begin

writeln('no.induk':4,' ','nama':11,' ','N.akhir',' ','huruf');

for i := 1 to jum_siswa do

with siswa[i] do

writeln( no_induk:5,' ',nama:15,' ',nilai_akhir:6:2,' ',nilai_huruf:5);


end;

begin

clrscr;

baca_data_siswa ;


urutDatasiswa;


cetakdatasiswa;

end.

Algortma : Program Sort Record

Program sort_record ;

uses wincrt;

CONST MaxData = 100 ;

type Datasiswa = record

No_induk : integer;

Nama, jurusan,mtk : string[30];

semester : byte ;

nilai : record

uts,uas, tugas,quis,absen : real ;

end;

Nilai_akhir : real;

nilai_huruf : char;

end;

Daftar_siswa = Array[1..maxData] of DataSiswa ;

var siswa : daftar_siswa ;

jum_siswa : integer;

procedure baca_data_siswa;

var lagi : char;


function nilhuruf ( Nilai : real ) : char;

begin

if nilai >= 80 then

nilhuruf := 'A'

else if ( nilai < 80 ) and ( nilai >=70) then

nilhuruf := 'B'

else if ( nilai < 70 ) and ( nilai >=60) then

nilhuruf:= 'C'

else if ( nilai < 60 ) and ( nilai >= 40 ) then

nilhuruf := 'D'

else

nilhuruf := 'E'

end;


begin


jum_siswa := 0;

repeat


jum_siswa := jum_siswa + 1;

with siswa [ jum_siswa ] do begin

writeln(' masukan data siswa : ');

write(' Nama Siswa : '); readln(nama);

write(' nomor induk : ');readln (no_induk);

write(' Jurusan : ' ); readln(jurusan) ;

write(' Mata Kuliah : '); readln(mtk);

write(' Semester : ' ); readln(semester);

writeln(' nilai-nilai ; ');

write(' tugas : '); readln(nilai.tugas);

write(' Quis : '); readln(nilai.quis);

write(' Nilai Absensi : '); readln(nilai.absen);

write(' nilai UTS : '); readln(nilai.uts);

write(' Nilai UAS : '); readln(nilai.uas);


nilai_akhir := 0.15* nilai.absen+ 0.15 * nilai.tugas+0.15*nilai.quis+ 0.25* nilai.uts + 0.3 * nilai.uas;

nilai_huruf := nilhuruf(nilai_akhir);

end;


write (' adakah data lagi (Y/T)? '); readln(lagi);


if jum_siswa + 1> maxData then begin

writeln('data telah maxsimal, segera akan durutkan ! ');

lagi := 'T'

end;


until upcase ( lagi ) = 'T';

end;


procedure urutDatasiswa ;

var i,j : integer ;

tampung : datasiswa ;

begin

for i := 1 to jum_siswa -1 do

for j:= 1 + 1 to jum_siswa do

if siswa[i].nilai_huruf < siswa [j].nilai_huruf then begin

tampung := siswa[i];

siswa[i] := siswa[j];

siswa[j]:= tampung ;

end;

end;


procedure cetakdatasiswa;

var i : integer ;

begin

writeln('no.induk':4,' ','nama':11,' ','N.akhir',' ','huruf');

for i := 1 to jum_siswa do

with siswa[i] do

writeln( no_induk:5,' ',nama:15,' ',nilai_akhir:6:2,' ',nilai_huruf:5);


end;

begin

clrscr;

baca_data_siswa ;


urutDatasiswa;


cetakdatasiswa;

end.