Défi : Trieur de notes
Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 63 sur 65.
Défi
FacileCréez un système complet de gestion des notes des étudiants qui traite les données des étudiants à partir d'une map, filtre les étudiants ayant réussi et les organise par ordre alphabétique. Ce défi combine l'itération de map, le filtrage conditionnel, les opérations sur les listes et le tri.
Vous disposez des données d'entrée suivantes :
- Une chaîne JSON représentant une map des noms d'étudiants (clés) et leurs scores aux tests (valeurs)
La chaîne JSON ressemblera à ceci : {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}
Votre tâche consiste à :
- Analyser la chaîne JSON dans une Map en utilisant les méthodes Dart appropriées
- Créer une liste vide appelée
passingStudentspour stocker les noms des étudiants ayant réussi - Parcourir la map et ajouter les noms des étudiants ayant obtenu un score de 60 ou plus à la liste
passingStudents - Trier la liste
passingStudentspar ordre alphabétique en utilisant la méthodesort() - Afficher le nombre total d'étudiants ayant passé l'examen avec le format exact :
Total students: X - Afficher le nombre d'étudiants ayant réussi avec le format exact :
Students who passed: X - Afficher le nombre d'étudiants ayant échoué avec le format exact :
Students who failed: X - Afficher les étudiants ayant réussi par ordre alphabétique, chacun sur une nouvelle ligne, avec le format exact :
Passing student: [name] - Si aucun étudiant n'a réussi, affichez :
No students passed the exam
Votre programme doit démontrer une itération correcte de map, une logique conditionnelle pour filtrer les données basées sur le seuil de réussite de 60, la manipulation de listes et des opérations de tri. La sortie doit correspondre exactement au format spécifié ci-dessus, avec les étudiants ayant réussi listés par ordre alphabétique.
Essayez vous-même
import 'dart:io';
import 'dart:convert';
void main() {
// Lire la chaîne JSON en entrée
String? jsonString = stdin.readLineSync();
// Analyser la chaîne JSON dans une Map
Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
// Créer une liste vide pour stocker les étudiants ayant réussi
List<String> passingStudents = [];
// TODO: Écrivez votre code ci-dessous
// 1. Parcourir la map et filtrer les étudiants ayant obtenu 60 ou plus
// 2. Ajouter les noms des étudiants ayant réussi à la liste passingStudents
// 3. Trier la liste passingStudents par ordre alphabétique
// 4. Calculer et afficher les statistiques requises
// 5. Afficher les étudiants ayant réussi dans le format spécifié
// Afficher les résultats (remplacez par votre implémentation)
print("Total students: ");
print("Students who passed: ");
print("Students who failed: ");
// Afficher les étudiants ayant réussi ou le message "No students passed the exam"
}Toutes les leçons de Logique & Flux
1Manipulation avancée des listes
Propriétés de liste : first & lastÉtat de la liste : isEmpty & isNotEmptyInverser une listeAjouter à une liste : insertSuppression dans une liste : removeWhereRechercher dans une liste : indexOfTrier une listeMélanger une listeRécapitulatif - Organisateur de liste4Manipulation avancée des Maps
Itérer sur une MapVérifier les clés et les valeursPropriétés de Map : keys & valuesAjout conditionnel : putIfAbsentSupprimer des entrées d'une MapMaps imbriquéesRécapitulatif - Mise à jour de l'inventaire2Opérations fonctionnelles sur les listes
Transformer avec 'map'Filtrer avec 'where'Utiliser '.toList()'Vérifier des conditions avec 'any'Conditions avec 'every'Trouver avec 'firstWhere'Récapitulatif - Filtrage de données3Les Ensembles
Qu'est-ce qu'un ensemble ?Créer un ensembleAjouter et supprimer des éléments d'un ensembleVérifier la présence d'éléments dans un ensembleConvertir une liste en ensembleUnion d'ensemblesIntersection d'ensemblesDifférence d'ensemblesRécapitulatif - Liste d'invités uniques