Назад к задачамПолучайте помощь с лайвкодингом в реальном времени с Sobes Copilot
Junior — Senior
25
Трансформация списка спортивных дисциплин в массив результатов
Условие задачи
Даны три класса: Sportsman, Sport и Result. В массиве triathlon находятся объекты Sport, каждый из которых содержит название дисциплины и список участников‑спортсменов. Необходимо пройтись по этому массиву, для каждой дисциплины собрать имена спортсменов, чьи баллы (score) превышают 5, и подсчитать суммарный возраст всех таких квалифицированных участников. Затем сформировать объект Result с полями discipline, qualified (список имён) и totalAge (общий возраст) и добавить его в список results внутри функции main. После выполнения программы вывести полученный список результатов в JSON‑формате.
import 'dart:convert';
class Sportsman {
String name;
int score;
int age;
Sportsman({required this.name, required this.score, required this.age});
}
class Sport {
String discipline;
List<Sportsman> players;
Sport({required this.discipline, required this.players});
}
class Result {
String discipline;
List<String> qualified;
int totalAge;
Result({required this.discipline, required this.qualified, required this.totalAge});
Map toJson() => {
'discipline': discipline,
'totalAge': totalAge,
'qualified': qualified.join(', ')
};
}
List<Sport> triathlon = [
Sport(discipline: 'swimming', players: [
Sportsman(name: 'Mike', age: 20, score: 9),
Sportsman(name: 'Jim', age: 23, score: 5),
Sportsman(name: 'Sam', age: 38, score: 12),
]),
Sport(discipline: 'run', players: [
Sportsman(name: 'John', age: 27, score: 8),
Sportsman(name: 'Anne', age: 33, score: 11),
Sportsman(name: 'David', age: 41, score: 2),
]),
Sport(discipline: 'cycling', players: [
Sportsman(name: 'Fred', age: 20, score: 1),
Sportsman(name: 'John', age: 20, score: 3),
Sportsman(name: 'Sam', age: 20, score: 7),
]),
];
//qualified where score > 5
///
/// {"discipline":"swimming","qualified":["Mike","Sam"],"totalAge":58},
/// {"discipline":"run","qualified":["John","Anne"],"totalAge":60},
/// {"discipline":"cycling","qualified":["Sam"],"totalAge":20}
///
void main() {
List<Result> results = [];
print(json.encode(results));
}