Menu
CoddyTech

Tantangan: Pengurut Nilai

Termasuk bagian Logika dan Alur dalam perjalanan Dart di Coddy. Pelajaran 63 dari 65.

challenge icon

Tantangan

Mudah

Buat sistem pengelolaan nilai siswa yang komprehensif. Sistem ini memproses data siswa dari map, menyaring siswa yang lulus, dan mengurutkannya berdasarkan abjad. Tantangan ini menggabungkan iterasi map, penyaringan dengan percabangan, operasi list, dan pengurutan.

Kamu diberikan input berikut:

  • String JSON yang merepresentasikan map nama siswa (kunci) dan nilai ujian mereka (nilai)

String JSON akan terlihat seperti ini: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

Tugasmu adalah:

  1. Parse string JSON menjadi Map menggunakan method Dart yang sesuai
  2. Buat list kosong bernama passingStudents untuk menyimpan nama siswa yang lulus
  3. Lakukan iterasi melalui map dan tambahkan nama siswa yang mendapat nilai 60 atau lebih ke list passingStudents
  4. Urutkan list passingStudents berdasarkan abjad menggunakan method sort()
  5. Cetak jumlah total siswa yang mengikuti ujian dengan format persis: Total students: X
  6. Cetak jumlah siswa yang lulus dengan format persis: Students who passed: X
  7. Cetak jumlah siswa yang tidak lulus dengan format persis: Students who failed: X
  8. Cetak siswa yang lulus berdasarkan urutan abjad, masing-masing pada baris baru, dengan format persis: Passing student: [name]
  9. Jika tidak ada siswa yang lulus, cetak: No students passed the exam

Programmu harus menunjukkan iterasi map yang tepat, logika percabangan untuk menyaring data berdasarkan batas kelulusan 60, manipulasi list, dan operasi pengurutan. Output harus sesuai dengan format persis yang ditentukan di atas, dengan siswa yang lulus dicantumkan berdasarkan urutan abjad.

Coba sendiri

import 'dart:io';
import 'dart:convert';

void main() {
  // Baca input string JSON
  String? jsonString = stdin.readLineSync();
  
  // Ubah string JSON menjadi Map
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // Buat list kosong untuk menyimpan siswa yang lulus
  List<String> passingStudents = [];
  
  // TODO: Tulis kodemu di bawah ini
  // 1. Telusuri map dan pilih siswa yang mendapat nilai 60 atau lebih
  // 2. Tambahkan nama siswa yang lulus ke list passingStudents
  // 3. Urutkan list passingStudents menurut abjad
  // 4. Hitung dan cetak statistik yang diperlukan
  // 5. Cetak siswa yang lulus dalam format yang ditentukan
  
  // Tampilkan hasilnya (ganti dengan implementasimu)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // Cetak siswa yang lulus atau pesan "No students passed the exam"
}

Semua pelajaran di Logika dan Alur

Latihan sendiri: Compiler Dart online