Menu
Coddy logo textTech

Desafío: Clasificador de calificaciones

Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 63 de 65.

challenge icon

Desafío

Fácil

Crea un sistema integral de gestión de calificaciones de estudiantes que procese datos de estudiantes a partir de un mapa, filtre a los estudiantes aprobados y los organice alfabéticamente. Este desafío combina la iteración de mapas, el filtrado condicional, las operaciones de listas y la ordenación.

Se te proporciona la siguiente entrada:

  • Una cadena JSON que representa un mapa de nombres de estudiantes (claves) y sus puntuaciones en los exámenes (valores)

La cadena JSON se verá así: {"Alice": 85, "Bob": 45, "Charlie": 92, "Diana": 58, "Eve": 76, "Frank": 39, "Grace": 88}

Tu tarea es:

  1. Analizar la cadena JSON en un Map utilizando los métodos de Dart apropiados
  2. Crear una lista vacía llamada passingStudents para almacenar los nombres de los estudiantes que aprobaron
  3. Iterar a través del mapa y agregar los nombres de los estudiantes que obtuvieron una puntuación de 60 o superior a la lista passingStudents
  4. Ordenar la lista passingStudents alfabéticamente utilizando el método sort()
  5. Imprimir el número total de estudiantes que realizaron el examen con el formato exacto: Total students: X
  6. Imprimir el número de estudiantes que aprobaron con el formato exacto: Students who passed: X
  7. Imprimir el número de estudiantes que reprobaron con el formato exacto: Students who failed: X
  8. Imprimir los estudiantes aprobados en orden alfabético, cada uno en una línea nueva, con el formato exacto: Passing student: [name]
  9. Si ningún estudiante aprobó, imprimir: No students passed the exam

Tu programa debe demostrar una iteración de mapa adecuada, lógica condicional para filtrar datos basados en el umbral de aprobación de 60, manipulación de listas y operaciones de ordenación. La salida debe coincidir con el formato exacto especificado anteriormente, con los estudiantes aprobados enumerados en orden alfabético.

Pruébalo tú mismo

import 'dart:io';
import 'dart:convert';

void main() {
  // Leer la entrada de la cadena JSON
  String? jsonString = stdin.readLineSync();
  
  // Analizar la cadena JSON en un Map
  Map<String, dynamic> studentGrades = jsonDecode(jsonString!);
  
  // Crear una lista vacía para almacenar a los estudiantes aprobados
  List<String> passingStudents = [];
  
  // TODO: Escribe tu código a continuación
  // 1. Iterar a través del mapa y filtrar a los estudiantes que obtuvieron 60 o más
  // 2. Agregar los nombres de los estudiantes aprobados a la lista passingStudents
  // 3. Ordenar la lista passingStudents alfabéticamente
  // 4. Calcular e imprimir las estadísticas requeridas
  // 5. Imprimir los estudiantes aprobados en el formato especificado
  
  // Mostrar los resultados (reemplazar con tu implementación)
  print("Total students: ");
  print("Students who passed: ");
  print("Students who failed: ");
  // Imprimir estudiantes aprobados o el mensaje "No students passed the exam"
}

Todas las lecciones de Lógica y Flujo