Syntax Program Penghitung Skor Ujian

uses wincrt;
type rec_skor=record
notes,nama:string;
skor:byte;
status:string;
end;
array_skor=array[1..20] of rec_skor;

var skor:array_skor;
i,n:byte;
        pil:1..6;

procedure tambah_nama_pst (var x:array_skor);
var xx:string;
    ya:char;
label ulang;

begin
repeat
begin                              
     writeln('* MASUKKAN DATA PESERTA *');
ulang:
     write('Nomor Ujian    : ');readln(xx);
     if n>0 then
     begin
          for i:=1 to n do
          begin
               if x[i].notes=xx then
               begin
                    writeln;
                    writeln('Maaf, Nomor Sudah Ada di List');
                    goto ulang;
               end;
          end;
     end;
     inc(n);
     x[n].notes:=xx;
     write('Nama Peserta   : ');readln(x[n].nama);
     writeln;
     write('Apakah ingin menambahkan lagi ? y/n ');readln(ya);
end
until(ya<>'y');
end;
procedure isi_skor (var x:array_skor);
var no:string;
    ketemu:boolean;
    benar,salah,abs,posisi:byte;
label ul;

begin
ketemu:=false;
writeln('Mengisi Skor Peserta');
write('Masukkan nomor test peserta yang akan diisi skor : ');readln(no);
  {cek}
  for i:=1 to n do
      begin
      if (x[i].notes=no) and (x[i].skor=0) then
         begin
ketemu:=true;posisi:=i;
end;
      end;
  if ketemu then
      begin
      ul:
      write('Isi jumlah jawaban benar  :  ');readln(benar);
      write('Isi jumlah jawaban salah  :  ');readln(salah);
      write('Isi jumlah jawaban kosong :  ');readln(abs);
      if (benar+salah+abs)<>10 then
         begin
         writeln('Isian tidak benar, ulangi !');goto ul;
         end;
      {hitung}
      x[posisi].skor:=(benar*3)+(salah*-1)+(abs*0);
      if x[posisi].skor>=(0.6*30) then x[posisi].status:='Lulus' else x[posisi].status:='Gagal';
      end
  else writeln('Nomor sudah ada atau sudah pernah mengisi skor');
end;
     
procedure cetak_semua (var x:array_skor);
begin
writeln('----------------------------------------------------');
writeln(' No    Nomor Test      Nama      Skor      Status   ');
writeln('----------------------------------------------------');
for i:=1 to n do with x[i] do
    writeln(i:2,' ',notes:11,'        ',nama:6,'    ',skor:4,'    ',status:8);
writeln('----------------------------------------------------');

end;


procedure cetak_lulus (var x:array_skor);
begin
writeln('----------------------------------------------------');
writeln(' No    Nomor Test      Nama      Skor      Status   ');
writeln('----------------------------------------------------');
for i:=1 to n do
    with x[i] do
    begin
if (x[i].skor>=18) and (x[i].status='Lulus') then
        writeln(i:2,' ',notes:11,'        ',nama:6,'    ',skor:4,'    ',status:8)
    end;
writeln('----------------------------------------------------');
end;

procedure cetak_gagal (var x:array_skor);
begin
writeln('-----------------------------------------------------');
writeln(' No    Nomor Test      Nama      Skor      Status   ');
writeln('-----------------------------------------------------');
for i:=1 to n do
    begin
    with x[i] do
         begin
if (x[i].skor<18) and (x[i].status='Gagal') then
         writeln(i:2,' ',notes:11,'        ',nama:6,'    ',skor:4,'    ',status:8)
         end;
    end;
writeln('------------------------------------------------------');
end;

{Program Utama}
begin
repeat
begin
clrscr;
     writeln('APLIKASI PENGHITUNG SKOR UJIAN');
     writeln('1. Tambah Peserta');
     writeln('2. Isi Skor');
     writeln('3. Cetak Peserta');
     writeln('4. Peserta Yang Lulus');
     writeln('5. Peserta Yang Tidak Lulus');
     writeln('6. Keluar');
     write('Pilih menu : ');readln(pil);
     case pil of
     1: tambah_nama_pst(skor);
     2: isi_skor(skor);
     3: cetak_semua(skor);
     4: cetak_lulus(skor);
     5: cetak_gagal(skor);
     6: writeln('Thank You');
     end;
     readln;
end;
until pil=6;
end.


Posted in: ,

0 komentar for "Syntax Program Penghitung Skor Ujian"

Leave a reply