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"
}

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

Потренируйтесь самостоятельно: Онлайн-компилятор Dart