Alpro
Alpro
uses
crt;
const
maks_array = 50;
type
mhsrecord = record
nim, nama: string;
nilai: integer;
indeks: char;
end;
{Larik1 = array[1..maks_array] of string;
Larik2 = array[1..maks_array] of integer;
Larik3 = array[1..maks_array] of char;}
mahasiswa = array[1..maks_array] of mhsrecord;
var
n : integer;
{nim, nama : Larik1;
nilai : Larik2;
indeks : Larik3;}
mhs : mahasiswa;
procedure JumlahData(var N : integer);
{I.S.: user memasukkan banyaknya data mahasiswa(n)}
{F.S.: menghasilkan banyaknya data mahasiswa(n)}
begin
write('Banyaknya Data Mahasiswa : ');
readln(N);
while(N <= 0) or (n > maks_array) do
begin
writeln('Banyaknya Data Hanya Antara 1-',maks_array);
readln;
gotoxy(1,2);clreol;
gotoxy(28,1);clreol;readln(N);
end;
end;
function RataRataNilai(n:integer;total:real):real;
{I.S.:}
{F.S.:}
begin
RataRataNilai := total / n;
end;//endfunction
procedure TampilData(n:integer);
{I.S.: Banyaknya data sudah terdefenisi}
{F.S.: Menampilkan daftar nilai mahasiswa}
var
i,total:integer;
begin
total := 0;
clrscr;
gotoxy(29,1);writeln('DAFTAR NILAI MAHASISWA');
gotoxy(11,2);
writeln('--------------------------------------------------------');
gotoxy(11,3);
writeln('| NO | N I M | NAMA MAHASISWA | NILAI | INDEKS |');
gotoxy(11,4);
writeln('--------------------------------------------------------');
for i:= 1 to n do
begin
gotoxy(11,i+4);
writeln('| | | | | |');
gotoxy(13,i+4);write(i);
gotoxy(18,i+4);readln(mhs[i].nim);
gotoxy(30,i+4);readln(mhs[i].nama);
gotoxy(52,i+4);readln(mhs[i].nilai);
//validasi nilai
while(mhs[i].nilai <= 0) do
begin
gotoxy(11,i+6);write('Nilai Tidak Boleh < 1, tekan enter untuk mengisi
ulang');
readln;
gotoxy(11,i+6);clreol;
gotoxy(52,i+4);readln(mhs[i].nilai);
end;
mhs[i].indeks := IndeksNilai(mhs[i].nilai);
gotoxy(62,i+4);write(mhs[i].indeks);
total := total + mhs[i].nilai;
end;//endfor
gotoxy(11,i+5);
writeln('--------------------------------------------------------');
gotoxy(11,i+6);
writeln('Rata-rata nilai dari ',n,' data = ', RataRataNilai(n,total):0:1);
gotoxy(11,i+7);
writeln('Nilai Tertinggi = ', NilaiMaks(n,mhs));
gotoxy(11,i+8);
writeln('Nilai Terendah = ', NilaiMin(n,mhs));
gotoxy(11,i+9);
writeln('Jumlah Lulus = ', JmlLulus(n,mhs):0:0,' Mahasiswa');
gotoxy(11,i+10);
writeln('Persentase Lulus = ', PersentaseLulus(n,mhs):0:1,'%');
gotoxy(11,i+11);
writeln('Persentase Tidak Lulus = ', PersentaseTdkLulus(n,mhs):0:1,'%');
gotoxy(11,i+12);
writeln('Jumlah Tidak Lulus = ', JmlTdkLulus(n,mhs),' Mahasiswa');
i := i + 12;
JmlMhsPerIndeks(n,i,mhs);
end; //endprocedure
{Algoritma Utama}
begin
JumlahData(n);
TampilData(n);
readln;
end.