Menu
CoddyTech

Thử thách: Sắp xếp điểm số

Thuộc phần Logic và luồng điều khiển trong hành trình Dart của Coddy. Bài học 63 trên 65.

challenge icon

Thử thách

Dễ

Tạo một hệ thống quản lý điểm toàn diện cho học sinh, xử lý dữ liệu học sinh từ một map, lọc những học sinh đạt yêu cầu và sắp xếp tên theo thứ tự bảng chữ cái. Thử thách này kết hợp việc duyệt map, lọc theo điều kiện, thao tác với danh sách và sắp xếp.

Bạn sẽ nhận đầu vào sau:

  • Một chuỗi JSON biểu diễn map gồm tên học sinh (khóa) và điểm kiểm tra của các em (giá trị)

Chuỗi JSON sẽ có dạng như sau: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

Nhiệm vụ của bạn là:

  1. Phân tích chuỗi JSON thành một Map bằng các phương thức Dart phù hợp
  2. Tạo một danh sách rỗng có tên passingStudents để lưu tên những học sinh đạt yêu cầu
  3. Duyệt map và thêm tên những học sinh đạt từ 60 điểm trở lên vào danh sách passingStudents
  4. Sắp xếp danh sách passingStudents theo thứ tự bảng chữ cái bằng phương thức sort()
  5. In tổng số học sinh đã làm bài thi theo đúng định dạng: Total students: X
  6. In số học sinh đạt yêu cầu theo đúng định dạng: Students who passed: X
  7. In số học sinh không đạt theo đúng định dạng: Students who failed: X
  8. In tên các học sinh đạt yêu cầu theo thứ tự bảng chữ cái, mỗi tên trên một dòng mới, theo đúng định dạng: Passing student: [name]
  9. Nếu không có học sinh nào đạt yêu cầu, hãy in: No students passed the exam

Chương trình của bạn cần thể hiện cách duyệt map phù hợp, logic điều kiện để lọc dữ liệu theo ngưỡng đạt yêu cầu là 60, thao tác với danh sách và sắp xếp. Đầu ra phải khớp chính xác với định dạng đã nêu ở trên, trong đó tên học sinh đạt yêu cầu được sắp xếp theo thứ tự bảng chữ cái.

Tự làm thử

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

void main() {
  // Đọc chuỗi JSON đầu vào
  String? jsonString = stdin.readLineSync();
  
  // Phân tích chuỗi JSON thành Map
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // Tạo danh sách rỗng để lưu các học sinh đạt yêu cầu
  List<String> passingStudents = [];
  
  // TODO: Viết code của bạn bên dưới
  // 1. Duyệt qua Map và lọc các học sinh đạt từ 60 điểm trở lên
  // 2. Thêm tên các học sinh đạt yêu cầu vào danh sách passingStudents
  // 3. Sắp xếp danh sách passingStudents theo thứ tự bảng chữ cái
  // 4. Tính và in ra các số liệu thống kê cần thiết
  // 5. In ra các học sinh đạt yêu cầu theo định dạng đã chỉ định
  
  // In ra kết quả (thay bằng phần code bạn viết)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // In ra các học sinh đạt yêu cầu hoặc thông báo "No students passed the exam"
}

Tất cả bài học trong Logic và luồng điều khiển

Tự luyện tập: Trình biên dịch Dart online