Испытание: Сортировщик оценок
Часть раздела Логика и управление потоком путешествия по Dart на Coddy — урок 63 из 65.
Задание
ЛегкоСоздайте комплексную систему управления оценками студентов, которая обрабатывает данные студентов из карты (map), фильтрует успешно сдавших студентов и упорядочивает их по алфавиту. Эта задача сочетает в себе итерацию по карте, условную фильтрацию, операции со списками и сортировку.
Вам предоставляются следующие входные данные:
- Строка JSON, представляющая собой карту имен студентов (ключи) и их баллов за тест (значения)
Строка JSON будет выглядеть следующим образом: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
Ваша задача:
- Разобрать строку JSON в Map, используя соответствующие методы Dart
- Создать пустой список с именем
passingStudentsдля хранения имен студентов, успешно сдавших экзамен - Выполнить итерацию по карте и добавить имена студентов, набравших 60 или более баллов, в список
passingStudents - Отсортировать список
passingStudentsпо алфавиту, используя методsort() - Вывести общее количество студентов, сдававших экзамен, в точном формате:
Total students: X - Вывести количество студентов, успешно сдавших экзамен, в точном формате:
Students who passed: X - Вывести количество студентов, не сдавших экзамен, в точном формате:
Students who failed: X - Вывести успешно сдавших студентов в алфавитном порядке, каждого на новой строке, в точном формате:
Passing student: [name] - Если никто не сдал экзамен, вывести:
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"
}Все уроки раздела Логика и управление потоком
1Продвинутая работа со списками
Свойства списка: first и lastСостояние списка: isEmpty и isNotEmptyРазворот спискаДобавление в список: insertУдаление из списка: removeWhereПоиск в списке: indexOfСортировка спискаПеремешивание спискаИтоги — Органайзер списков4Продвинутая работа с Map
Итерация по MapПроверка ключей и значенийСвойства Map: keys и valuesУсловное добавление: putIfAbsentУдаление записей из MapВложенные MapИтоги — Обновление инвентаря2Функциональные операции со списками
Преобразование с помощью 'map'Фильтрация с помощью 'where'Использование '.toList()'Проверка условий с помощью 'any'Условия с 'every'Поиск с помощью 'firstWhere'Повторение — фильтрация данных5Проект: Калькулятор корзины
Настройка проектаДобавление товаров в корзину3Множества
Что такое множество?Создание множестваДобавление и удаление элементовПроверка наличия элементов в множествеПреобразование списка в множествоОбъединение множествПересечение множествРазность множествИтоги: уникальный список гостей