program contoh_record;
uses wincrt;
type mahasiswa=record
nim,nama,prodi:string;
ip:real;
jk:real;
end;
larik_mhs=array[1..20] of mahasiswa;
var
mhs:larik_mhs;
bayangan:larik_mhs;
i,n,j:byte;
lagi:char;
pil:1..11;
procedure isi_data(var X:larik_mhs);
begin
repeat
begin
inc(n);
writeln('Mengisi data mahasiswa ke ',n);
write('masukkan nim --> ');readln(X[n].nim);
write('masukkan nama --> ');readln(X[n].nama);
write('wanita/pria (1/0) -->
');readln(X[n].jk);
write('masukkan prodi --> ');readln(X[n].prodi);
write('masukkan ip --> ');readln(X[n].ip);
writeln;
write('tambah lagi <y/t>? ');readln(lagi);
end
until (lagi<>'y');
end;
procedure cetak(var X:larik_mhs);
var gender:string;
begin
writeln('DAFTAR MAHASISWA IST AKPRIND YOGYAKARTA 2012');
writeln('--------------------------------------------');
writeln('NO NIM NAMA PRODI JK
IP');
writeln('--------------------------------------------');
for
i:=1 to n do with X[i] do
begin
if jk=0 then gender:='pria' else gender:='wanita';
writeln(i:2,' ',nim:5,' ',nama:10,' ',prodi:10,' ',gender:8,' ',ip:6:2);
end;
writeln('--------------------------------------------');
end;
procedure filter_ip(var X:larik_mhs);
var fil:1..3;
begin
writeln('1.Tampilkan ip < 2.00');
writeln('2.Tampilakn ip 2.00 - 3.00');
writeln('3.Tampilkan ip > 3.00');
write('pilih <1-3> ');readln(fil);
if
fil=1 then
begin
writeln('mahasiswa dengan ip kurang dari 2.00 adalah sbb');
writeln;
for i:=1 to n do
begin
if X[i].ip < 2.0 then
writeln(i:2,' ',X[i].nim:9,' ',X[i].nama:15,'
',X[i].prodi:10,X[i].ip:6:2);
end;
end
else if fil=2 then
begin
writeln('mahasiswa dengan ip 2.00 - 3.00 adalah sbb');
writeln;
for i:=1 to n do
begin
if (X[i].ip >= 2.00) and (X[i].ip <= 3.00) then
writeln(i:2,' ',X[i].nim:9,' ',X[i].nama:15,'
',X[i].prodi:10,X[i].ip:6:2);
end;
end
else
begin
writeln('mahasiswa dengan ip lebih dari 3.00 adalah sbb');
writeln;
for i:=1 to n do
begin
if X[i].ip > 3.0 then
writeln(i:2,' ',X[i].nim:9,' ',X[i].nama:15,'
',X[i].prodi:10,X[i].ip:6:2);
end;
end;
end;{end procedure filter_ip}
procedure hapus(var X:larik_mhs);
var delet:byte;
begin
write('record nomor berapa yang akan dihapus ? ');readln(delet);
for
i:=delet to n-1 do X[i]:=X[i+1];
dec(n);
writeln('record no ',delet,' sudah dihapus');
end;
procedure sorting_ip(var X:larik_mhs);
var
sementara:mahasiswa;
begin
{mengisi array bayangan dengan data array asal}
for
i:=1 to n do bayangan[i]:=X[i];
{mengurutkan bayangan, array asli tidak diurutkan}
for
i:=1 to n-1 do
begin
for j:=i+1 to n do
begin
if (bayangan[i].ip<bayangan[j].ip) then
begin
sementara:=bayangan[i];
bayangan[i]:=bayangan[j];
bayangan[j]:=sementara;
end;
end;
end;
writeln('data setelah diurutkan berdasar ip');writeln;
cetak(bayangan);
end;
{program utama}
begin
repeat
begin
writeln(' MENGELOLA DATA
MAHASISWA');
writeln('1.Isi/tambah data');
writeln('2.Mencari nama tertentu');
writeln('3.Mencari ip tertentu');
writeln('4.Filtering berdasar ip');
writeln('5.Filtering berdasar jenis kelamin');
writeln('6.Filtering berdasar program studi');
writeln('7.Mencari ip tertinggi dan terendah');
writeln('8.Menghapus record tertentu');
writeln('9.Cetak tabel');
writeln('10.Sorting ip');
writeln('11.Selesai');
writeln;
write('pilihan anda [1..11] --> ');readln(pil);
case pil of
1:isi_data(mhs);
{2:cari_nama(mhs);
3:cari_ip(mhs);}
4:filter_ip(mhs);
{5:filter_jk(mhs);
6:filter_prodi(mhs);
7:maxmin_ip(mhs);}
8:hapus(mhs);
9:cetak(mhs);
10:sorting_ip(mhs);
11:writeln('Terima Kasih');
end;
readln;
end
until (pil=10);
0 komentar:
Posting Komentar