uses crt;
type data=record
nama,nim:string;
ipk:real;
end;
var mhs:array[1..50] of data;
i,j,n,temp :integer;
pilih:char;
procedure input;
begin
clrscr;
writeln('+--------------------------+');
writeln('|
Jumlah Mahasiswa : |');
writeln('|---------------------------|');
gotoxy(22,2);readln(n);
for
i:=1 to n do
begin
writeln('|---------------------------|');
writeln('|
Data ke-',i,' |');
writeln('|--------------------------|');
writeln('| Nama :
|');
writeln('| NIM : |');
writeln('| IPK : |');
writeln('+------------------------+');
gotoxy(10,6+(6*(i-1)));readln(mhs[i].nama);
gotoxy(10,7+(6*(i-1)));readln(mhs[i].nim);
gotoxy(10,8+(6*(i-1)));readln(mhs[i].ipk);
end;
end;
procedure kolom;
begin
writeln('| | | |');
writeln('+-----------------------------------|');
end;
procedure output;
begin
clrscr;
writeln('+---------------------------------------------+');
writeln('| DATA NILAI MAHASISWA |');
writeln('|------------------------------------------------|');
writeln('| NIM
| NAMA |
IPK |');
writeln('|------------------------------------------------|');
writeln('| | |
|');
for
i:=1 to n do
begin
gotoxy(1,5+i);kolom;
gotoxy(3,5+i);writeln(mhs[i].nim);
gotoxy(15,5+i);writeln(mhs[i].nama);
gotoxy(32,5+i);writeln(mhs[i].ipk:2:2);
end;
readkey;
end;
procedure sort;
var
max:integer;
temp:data;
begin
for i:=1 to n-1 do
begin
max:=i;
for
j:=i+1 to n do
if
mhs[j].ipk<mhs[max].ipk then
max:=j;
temp:=mhs[max];
mhs[max]:=mhs[i];
mhs[i]:=temp;
end;
output;
end;
begin
input;
sort;
end.2. Screenshot Program