/**
 * @(#)Soal1Free.java
 *
 *
 * @author Jasiph A.Polela
 * @version 1.00 2008/5/2
 */
 
import java.io.*;

public class Soal1Free {
	// agar dapat dipanggil dari method static void main
	// maka method Keyboardread() ditentukan Static juga.
	private static String Keyboardread() {
		String input = "";
		InputStreamReader stream = new InputStreamReader(System.in);
		BufferedReader reader = new BufferedReader(stream);
		try {input = reader.readLine();}
		catch (IOException e){
			System.err.println(e);
			System.exit(1);
		} return input;
	}
    
   public static void main(String[] args) {
   		// Buat variabel array untuk menampung data
   		// mahasiswa. Ukuran array belum ditentukan.
   		String[] NIM;
		String[] nama;
		int[] NilaiKehadiran;
		int[] NilaiMidTest;
		int[] NilaiUAS;
   	
    	// input jumlah mahasiswa
    	// soal nomor 1a.
    	System.out.print("Jumlah Mahasiswa : ");
        int JmlhMhs = Integer.parseInt(Keyboardread());

        // inisialisasi ukuran/besar array 
        // NIM,nama, dan semua nilai sesuai dengan jumlah
        // mahasiwa yang di inginkan
        NIM = new String[JmlhMhs];
        nama = new String[JmlhMhs];
        NilaiKehadiran = new int[JmlhMhs];
        NilaiMidTest = new int[JmlhMhs];
        NilaiUAS = new int[JmlhMhs];   
        
        // Soal nomor 1.b
        // input mahasiswa dan nilai
        // sesuai dengan JmlhMhs
        // looping memakai for
        for (int ulang=0;ulang<JmlhMhs;ulang++) {
        	/* Karena variable ulang dimulai dari 0
        	 * maka tempilan untuk mengisi data ke :
        	 * variabel ulang harus di tambah 1
        	 */
        	System.out.println("\n\nMengisi Data ke : "+ (ulang+1));
        	System.out.print("NIM Mahasiswa       : ");NIM[ulang] = Keyboardread();
        	System.out.print("Nama Mahasiswa      : ");nama[ulang] = Keyboardread();
        	System.out.print("Nilai Kehadiran     : ");NilaiKehadiran[ulang] = Integer.parseInt(Keyboardread());
        	System.out.print("Nilai Midtest       : ");NilaiMidTest[ulang] = Integer.parseInt(Keyboardread());
			System.out.print("Nilai UAS           : ");NilaiUAS[ulang] = Integer.parseInt(Keyboardread());
        }
        
        // soal no 1.c 1.d 1.e
        // tampilkan Daftar Nilai
        int jumlahMahsiswaLulus = 0;
        System.out.println("\n\nNo.\tNIM\tNama\t\tNilai Akhir\tGrade");
        System.out.println("===========================================================");
        for (int ulang=0;ulang<JmlhMhs;ulang++) {
        	// hitung nilai akhri dari setiap mahasiswa
        	// nilai akhir dibulatkan
        	int NilaiAkhir = (int)((0.1*NilaiKehadiran[ulang])+(0.4*NilaiMidTest[ulang])+(0.5 * NilaiUAS[ulang]));
        	// konversi nilai akhir ke Grade
        	char Grade;
        	if (NilaiAkhir>84) Grade = 'A';
        	else if (NilaiAkhir>75) Grade = 'B';
        	else if (NilaiAkhir>60) Grade = 'C';
        	else if (NilaiAkhir>45) Grade = 'D';
        	else Grade = 'E';
        	// cetak data
        	System.out.printf("%d\t",ulang);
        	System.out.printf("%s\t",NIM[ulang]);
        	System.out.printf("%s\t\t",nama[ulang]);
        	System.out.printf("%d\t",NilaiAkhir);
        	System.out.printf("%c\t\n",Grade);
        	// hitung mahasiswa yang lulus;
        	// soal 1.e
        	if (NilaiAkhir>60) jumlahMahsiswaLulus++;
        }
        System.out.println("===========================================================");
        System.out.println("Jumlah Mahasiswa                : "+JmlhMhs);
        System.out.println("Jumlah Mahasiswa yg  Lulus      : "+jumlahMahsiswaLulus);
        System.out.println("Jumlah Mahasiswa yg tidak lulus : "+(JmlhMhs - jumlahMahsiswaLulus));
    }
}
