Debug Program Java.
Seorang dosen membuat 5 soal dan diberikan kepada N mahasiswa. Untuk setiap nomor, maksimum nilai yang dapat dicapai oleh masing-masing mahasiswa adalah 100, dan minimum nilai adalah 0. Buatlah sebuah program dengan spesifikasi input dan output sebagai berikut:Input: Baris pertama input adalah sebuah bilangan bulat N yang menyatakan jumlah mahasiswa.N baris berikutnya masing-masing berisi 5 bilangan bulat yang merupakan nilai untuk setiap nomor (setiap baris berisi input nilai nomor 1 – 5 dari mahasiswa ke 1)Output:Nomor soal dimana paling banyak mahasiswa yang mendapat nilai 100. Jika tidak ada yang mendapat nilai 100, keluarkan hasil 0, dan jika ada lebih dari satu soal dengan jumlah nilai 100 yang sama, keluarkan nomor soal yang lebih kecil.
Contoh (bagian atas sebelum garis: input, bagian bawah setelah garis: output)
siswanya 5 orang,
Source code nya :
Contoh (bagian atas sebelum garis: input, bagian bawah setelah garis: output)
siswanya 5 orang,
100 100 80 20 100 100 80 80 80 80 100 100 100 100 100 60 50 40 80 100 60 80 100 50 100 _________________________________ Outputnya harus 5
Source code nya :
package ayoboga.com; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner sc = new Scanner(System.in); int[] counter = new int[5]; System.out.print("Masukan jumlah siswa : "); int nilai, n = sc.nextInt(); for(int i = 0; i < 5; i++){ for(int j = 0; j < n; j++) { System.out.print("Masukan nilai siswa ke-" + (j + 1) + " : "); nilai = sc.nextInt(); if(nilai == 100) { counter[j]++; } } } System.out.println(max(counter)); } public static int max(int[] counter){ int max = 0; for(int i = 0; i < 5; i++){ if(counter[i] < counter[max]) { max = i; } } return max; } }

23 Kontribusi 5 Poin
atau respon:
Jawaban Terpilih
Hai,
Saya tidak membahas cara entry (input) nya ya. Anggap aja data sdh terkumpul, dlm wujud array 2D -> `siswa_id_nilai`.
Di kasus ini, saya adakan array 1D -> `cntNilai100_i`, isinya counter utk mengingat soal ke-n ada berapa yg dpt nilai 100. Lalu dari array inilah kita cari mana yg tertinggi counternya, tp yg counternya > 0, dan jika ada catat nomor indexnya.
Pencatat nomor index, awalnya saya set -1, utk berjaga-jaga sekiranya hasil perolehan dosen ternyata tdk ada satu siswa pun yg bernilai 100.
Saya tidak membahas cara entry (input) nya ya. Anggap aja data sdh terkumpul, dlm wujud array 2D -> `siswa_id_nilai`.
Di kasus ini, saya adakan array 1D -> `cntNilai100_i`, isinya counter utk mengingat soal ke-n ada berapa yg dpt nilai 100. Lalu dari array inilah kita cari mana yg tertinggi counternya, tp yg counternya > 0, dan jika ada catat nomor indexnya.
Pencatat nomor index, awalnya saya set -1, utk berjaga-jaga sekiranya hasil perolehan dosen ternyata tdk ada satu siswa pun yg bernilai 100.
import java.util.*; class SK1609756640 { public static void main(String[] args){ // Scanner sc = new Scanner(System.in); // int[] counter = new int[5]; // System.out.print("Masukan jumlah siswa : "); // int nilai, n = sc.nextInt(); // for(int i = 0; i < 5; i++){ // for(int j = 0; j < n; j++) { // System.out.print("Masukan nilai siswa ke-" + (j + 1) + " : "); // nilai = sc.nextInt(); // if(nilai == 100) { // counter[j]++; // } // } // } // System.out.println(max(counter)); { // test-1. // sesuai contoh soal. int[][] siswa_id_nilai = { {100, 100, 80, 20, 100}, {100, 80, 80, 80, 80}, {100, 100, 100, 100, 100}, { 60, 50, 80, 80, 100}, { 60, 80, 50, 50, 100}, }; System.out.println( "Nilai 100 terbanyak ada di soal no. " + nmrSoalDgnNilai100Terbanyak(siswa_id_nilai) + "\n" ); } { // test-2. // misal jika ada yg kembar, yaitu soal no 1 & 5, // sama2 ada 3 siswa yg bernilai 100. int[][] siswa_id_nilai = { {100, 100, 80, 20, 20}, {100, 80, 80, 80, 80}, {100, 100, 100, 100, 100}, { 60, 50, 80, 80, 100}, { 60, 80, 50, 50, 100}, }; System.out.println( "Nilai 100 terbanyak ada di soal no. " + nmrSoalDgnNilai100Terbanyak(siswa_id_nilai) + "\n" ); } { // test-3. // misal jika semua nilai < 100. int[][] siswa_id_nilai = { { 90, 90, 80, 20, 20}, { 90, 80, 80, 80, 80}, { 90, 90, 90, 90, 90}, { 60, 50, 80, 80, 90}, { 60, 80, 50, 50, 90}, }; System.out.println( "Nilai 100 terbanyak ada di soal no. " + nmrSoalDgnNilai100Terbanyak(siswa_id_nilai) + "\n" ); } } static int nmrSoalDgnNilai100Terbanyak(int[][] siswa_id_nilai) { // siswa_id_nilai = tidak boleh array kosong! int qtySoal = siswa_id_nilai[0].length; int[] cntNilai100_i = new int[qtySoal]; // tabel counter utk yg nilainya 100 (fyi: init = 0). int cntNilai100Hi = 0; // nilai tertinggi dari tabel (array) di atas. int idxCntNilai100Hi = -1; // idx-array dari nilai tertinggi di atas. for (int[] siswaId_nilai : siswa_id_nilai) { for (int idxSoal = 0; idxSoal < qtySoal; idxSoal++) { if (siswaId_nilai[idxSoal] == 100) { cntNilai100_i[idxSoal]++; if (cntNilai100_i[idxSoal] > cntNilai100Hi) { cntNilai100Hi = cntNilai100_i[idxSoal]; idxCntNilai100Hi = idxSoal; } } } } // berikut utk pemeriksaan aja. System.out.println( "Counter nilai 100 dlm soal: " + Arrays.toString(cntNilai100_i)); return ++idxCntNilai100Hi; } }
2 Kontribusi 3 Poin
Jawaban
Hai,
Saya tidak membahas cara entry (input) nya ya. Anggap aja data sdh terkumpul, dlm wujud array 2D -> `siswa_id_nilai`.
Di kasus ini, saya adakan array 1D -> `cntNilai100_i`, isinya counter utk mengingat soal ke-n ada berapa yg dpt nilai 100. Lalu dari array inilah kita cari mana yg tertinggi counternya, tp yg counternya > 0, dan jika ada catat nomor indexnya.
Pencatat nomor index, awalnya saya set -1, utk berjaga-jaga sekiranya hasil perolehan dosen ternyata tdk ada satu siswa pun yg bernilai 100.
Saya tidak membahas cara entry (input) nya ya. Anggap aja data sdh terkumpul, dlm wujud array 2D -> `siswa_id_nilai`.
Di kasus ini, saya adakan array 1D -> `cntNilai100_i`, isinya counter utk mengingat soal ke-n ada berapa yg dpt nilai 100. Lalu dari array inilah kita cari mana yg tertinggi counternya, tp yg counternya > 0, dan jika ada catat nomor indexnya.
Pencatat nomor index, awalnya saya set -1, utk berjaga-jaga sekiranya hasil perolehan dosen ternyata tdk ada satu siswa pun yg bernilai 100.
import java.util.*; class SK1609756640 { public static void main(String[] args){ // Scanner sc = new Scanner(System.in); // int[] counter = new int[5]; // System.out.print("Masukan jumlah siswa : "); // int nilai, n = sc.nextInt(); // for(int i = 0; i < 5; i++){ // for(int j = 0; j < n; j++) { // System.out.print("Masukan nilai siswa ke-" + (j + 1) + " : "); // nilai = sc.nextInt(); // if(nilai == 100) { // counter[j]++; // } // } // } // System.out.println(max(counter)); { // test-1. // sesuai contoh soal. int[][] siswa_id_nilai = { {100, 100, 80, 20, 100}, {100, 80, 80, 80, 80}, {100, 100, 100, 100, 100}, { 60, 50, 80, 80, 100}, { 60, 80, 50, 50, 100}, }; System.out.println( "Nilai 100 terbanyak ada di soal no. " + nmrSoalDgnNilai100Terbanyak(siswa_id_nilai) + "\n" ); } { // test-2. // misal jika ada yg kembar, yaitu soal no 1 & 5, // sama2 ada 3 siswa yg bernilai 100. int[][] siswa_id_nilai = { {100, 100, 80, 20, 20}, {100, 80, 80, 80, 80}, {100, 100, 100, 100, 100}, { 60, 50, 80, 80, 100}, { 60, 80, 50, 50, 100}, }; System.out.println( "Nilai 100 terbanyak ada di soal no. " + nmrSoalDgnNilai100Terbanyak(siswa_id_nilai) + "\n" ); } { // test-3. // misal jika semua nilai < 100. int[][] siswa_id_nilai = { { 90, 90, 80, 20, 20}, { 90, 80, 80, 80, 80}, { 90, 90, 90, 90, 90}, { 60, 50, 80, 80, 90}, { 60, 80, 50, 50, 90}, }; System.out.println( "Nilai 100 terbanyak ada di soal no. " + nmrSoalDgnNilai100Terbanyak(siswa_id_nilai) + "\n" ); } } static int nmrSoalDgnNilai100Terbanyak(int[][] siswa_id_nilai) { // siswa_id_nilai = tidak boleh array kosong! int qtySoal = siswa_id_nilai[0].length; int[] cntNilai100_i = new int[qtySoal]; // tabel counter utk yg nilainya 100 (fyi: init = 0). int cntNilai100Hi = 0; // nilai tertinggi dari tabel (array) di atas. int idxCntNilai100Hi = -1; // idx-array dari nilai tertinggi di atas. for (int[] siswaId_nilai : siswa_id_nilai) { for (int idxSoal = 0; idxSoal < qtySoal; idxSoal++) { if (siswaId_nilai[idxSoal] == 100) { cntNilai100_i[idxSoal]++; if (cntNilai100_i[idxSoal] > cntNilai100Hi) { cntNilai100Hi = cntNilai100_i[idxSoal]; idxCntNilai100Hi = idxSoal; } } } } // berikut utk pemeriksaan aja. System.out.println( "Counter nilai 100 dlm soal: " + Arrays.toString(cntNilai100_i)); return ++idxCntNilai100Hi; } }
Dengan bantuan @jnrbdjnt, input pake user bisa kek gini :D
public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.print("Masukan jumlah siswa : "); int siswa = sc.nextInt(); System.out.print("Masukan jumlah Soal : "); int soal = sc.nextInt(); int[][] counter = new int[siswa][soal]; for(int i=0; i<siswa;i++) { for(int j=0; j<soal;j++) { System.out.print("Masukan nilai siswa ke-" + (j + 1) + " : "); counter[i][j]=sc.nextInt(); } } System.out.println(max(counter)); }

23 Kontribusi 5 Poin
Login untuk gabung berdiskusi
Buku Halo Koding!

Teman perjalanan kamu ngoding! baca buku ini!
Pertanyaan Lainnya
Top Kontributor
- @ahanafi
791 Kontribusi 521 Poin
- @Nandar
647 Kontribusi 204 Poin
- @dianarifr
642 Kontribusi 316 Poin
- @Saputroandhi
509 Kontribusi 162 Poin
- @dodipsitorus
412 Kontribusi 145 Poin