Minggu, 22 April 2012

Program Daftar_Nilai_Mahasiswa; ( Algoritma dan Pemograman )


Program Daftar_Nilai_Mahasiswa;
uses crt;
const
  maks_mhs=50;
type
  data_mhs= record
    NIM,Nama :string;
    Nilai    : integer;
    Indeks   : char;
  end;
  Array_mhs = array[1..maks_mhs] of Data_Mhs;
var
  Mhs : Array_Mhs;
  i,j,jumA,jumB,jumC,jumD,jumE :integer;
  tinggi, rendah: integer;
  total_nilai, rata_nilai :real;

begin
  gotoxy(29,1);write ('DAFTAR NILAI MAHASISWA');
  gotoxy(29,2);write ('----------------------');
  gotoxy(16,24);
  write('=================================================');
  gotoxy(16,5);
  write(' | NO |    NIM    |    NAMA    | NILAI | INDEKS |');
  gotoxy(16,6);
  write(' ------------------------------------------------');

  {inisialisasi}
  I:=1;
  jumA :=0; jumB:=0; jumC:=0; jumD:=0; jumE:=0;
  total_nilai := 0;

  gotoxy(16,7);
  write(' |    |           |            |       |        | ');
  {menampilkan nomor urut pertama}
  gotoxy(18,7); write (i);

  {memasukan NIM pertama}
  gotoxy(23,7);readln (Mhs [i].NIM);

  {mengecek apakah NIM yang di masukan 'stop' atau bukan}
  while(Mhs[i].NIM <> 'stop') and (i <= Maks_Mhs) do
  begin                                      
    {memasukan nama}
    gotoxy(35,i+6);readln(Mhs[i].Nama);

    {memasukan nilai}
    gotoxy(48,i+6);readln(Mhs[i].Nilai);

    case (Mhs[i].nilai) of
      80..100 : begin
                  Mhs[i].Indeks := 'A';
                  jumA :=jumA + 1;
                end;
    70..79 : begin
                  Mhs[i].Indeks := 'B';
                  jumB :=jumB + 1;
                end;
    60..69: begin
                  Mhs[i].Indeks := 'C';
                  jumC :=jumC + 1;
                end;
    50..59 : begin
                  Mhs[i].Indeks := 'D';
                  jumD :=jumD + 1;
                end;
    0..49 : begin
                  Mhs[i].Indeks := 'E';
                  jumE :=jumE + 1;
                end;
    end; {endcase}
    {MENAMPILKAN INDEKS NILAI}
    gotoxy(58,i+6);write(Mhs[i].Indeks);

    {menghitung total nilai}
    total_nilai := total_nilai + Mhs[i].Nilai;

    {menambah indeks berikutnya}
    i := i+1;

    gotoxy(16,i+6);
    write(' |    |           |            |       |        |');

     {menampilkan nomor urut berikuitnya}
    gotoxy(18,i+6); write (i);

    {memasukan NIM berikitnya}
    gotoxy(23,7);readln (Mhs [i].NIM)
  end; {endwhile}
  gotoxy(16,i+6);
  write  ('-------------------------------------------------');

  {menghitung rata-rata nilai}
  i:= i - 1; {banyaknya data}
  rata_nilai := total_nilai/i;

  {menampilkan rata_rata nilai}
  gotoxy(16,i+9);
  write('Rata_rata Nilai :',rata_nilai:0:1);

  {menentukan nilai tertinggi dan nilai terendah}

  tinggi := Mhs[1].Nilai;
  rendah := Mhs[1].Nilai;
  for j := 2 to i do
  begin
     if(Mhs[j].Nilai >= tinggi)
       then
         tinggi := Mhs[j].Nilai;

     if(Mhs[j].Nilai <= rendah)
       then
         tinggi := Mhs[j].Nilai;
  end;
  {menampilkan nilai tertinggi dan nilai terendah}
  gotoxy(16,i+10);
  write ('nilai tertinggi : ',tinggi);
  gotoxy(16,i+11);
  write ('nilai terendah  : ',rendah);

  {menampilkan jumlah per indeks}
  gotoxy(16,i+12);
  write('jumlah indeks A :' ,jumA,' Mahasiswa');
  gotoxy(16,i+13);
  write('jumlah indeks B :' ,jumB,' Mahasiswa');
  gotoxy(16,i+14);
  write('jumlah indeks C :' ,jumC,' Mahasiswa');
  gotoxy(16,i+15);
  write('jumlah indeks D :' ,jumD,' Mahasiswa');

  readln;
end.

Tidak ada komentar:

Posting Komentar