Menu
Coddy logo textTech

Défi : Trieur de notes

Fait partie de la section Logique & Flux du Journey Dart de Coddy — leçon 63 sur 65.

challenge icon

Défi

Facile

Cré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 à :

  1. Analyser la chaîne JSON dans une Map en utilisant les méthodes Dart appropriées
  2. Créer une liste vide appelée passingStudents pour stocker les noms des étudiants ayant réussi
  3. Parcourir la map et ajouter les noms des étudiants ayant obtenu un score de 60 ou plus à la liste passingStudents
  4. Trier la liste passingStudents par ordre alphabétique en utilisant la méthode sort()
  5. Afficher le nombre total d'étudiants ayant passé l'examen avec le format exact : Total students: X
  6. Afficher le nombre d'étudiants ayant réussi avec le format exact : Students who passed: X
  7. Afficher le nombre d'étudiants ayant échoué avec le format exact : Students who failed: X
  8. Afficher les étudiants ayant réussi par ordre alphabétique, chacun sur une nouvelle ligne, avec le format exact : Passing student: [name]
  9. 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