Menu
Coddy logo textTech

Испытание: Сортировщик оценок

Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 63 из 65.

challenge icon

Задание

Легко

Создайте комплексную систему управления оценками студентов, которая обрабатывает данные студентов из карты (map), фильтрует успешно сдавших студентов и упорядочивает их по алфавиту. Эта задача сочетает в себе итерацию по карте, условную фильтрацию, операции со списками и сортировку.

Вам предоставляются следующие входные данные:

  • Строка JSON, представляющая собой карту имен студентов (ключи) и их баллов за тест (значения)

Строка JSON будет выглядеть следующим образом: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

Ваша задача:

  1. Разобрать строку JSON в Map, используя соответствующие методы Dart
  2. Создать пустой список с именем passingStudents для хранения имен студентов, успешно сдавших экзамен
  3. Выполнить итерацию по карте и добавить имена студентов, набравших 60 или более баллов, в список passingStudents
  4. Отсортировать список passingStudents по алфавиту, используя метод sort()
  5. Вывести общее количество студентов, сдававших экзамен, в точном формате: Total students: X
  6. Вывести количество студентов, успешно сдавших экзамен, в точном формате: Students who passed: X
  7. Вывести количество студентов, не сдавших экзамен, в точном формате: Students who failed: X
  8. Вывести успешно сдавших студентов в алфавитном порядке, каждого на новой строке, в точном формате: Passing student: [name]
  9. Если никто не сдал экзамен, вывести: No students passed the exam

Ваша программа должна демонстрировать правильную итерацию по карте, условную логику для фильтрации данных на основе порога прохождения 60 баллов, манипуляции со списками и операции сортировки. Вывод должен соответствовать точному формату, указанному выше, со списком успешно сдавших студентов в алфавитном порядке.

Попробуйте сами

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

void main() {
  // Прочитать входную строку JSON
  String? jsonString = stdin.readLineSync();
  
  // Разобрать строку JSON в Map
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // Создать пустой список для хранения имен успешно сдавших студентов
  List<String> passingStudents = [];
  
  // TODO: Напишите ваш код ниже
  // 1. Переберите элементы map и отфильтруйте студентов, набравших 60 баллов или выше
  // 2. Добавьте имена успешно сдавших студентов в список passingStudents
  // 3. Отсортируйте список passingStudents по алфавиту
  // 4. Рассчитайте и выведите необходимую статистику
  // 5. Выведите список успешно сдавших студентов в указанном формате
  
  // Вывод результатов (замените вашей реализацией)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // Вывести список успешно сдавших или сообщение "No students passed the exam"
}

Все уроки раздела Логика и управление потоком