Generar un Reporte de Calificaciones
Parte de la sección Lógica y Flujo del Journey de PHP de Coddy — lección 38 de 68.
Desafío
FácilRecibirás una entrada: un objeto JSON que representa el libro de calificaciones de los estudiantes. El libro de calificaciones utiliza los nombres de los estudiantes como claves, y cada estudiante tiene un "id" y un arreglo de "grades" que contiene sus puntuaciones de exámenes.
Lee la entrada, convierte la cadena JSON en un arreglo de libro de calificaciones y genera un boletín de calificaciones formateado para todos los estudiantes. Para cada estudiante, muestra su nombre, ID de estudiante, todas las calificaciones individuales y su promedio redondeado a 2 decimales.
Formatea la salida exactamente de la siguiente manera:
- Imprime
===== REPORT CARD =====como encabezado - Para cada estudiante, imprime:
Student: [name]ID: [student_id]Grades: [grade1], [grade2], [grade3], ...(todas las calificaciones separadas por comas y espacios)Average: [average](redondeado a 2 decimales)- Una línea en blanco después de cada estudiante (excepto el último)
Formato de entrada: Una línea que contiene un objeto JSON que representa el libro de calificaciones (ejemplo: {"Alice":{"id":101,"grades":[85,92,78]},"Bob":{"id":102,"grades":[90,88,95]},"Charlie":{"id":103,"grades":[76,84,89]}})
Salida esperada: Un boletín de calificaciones formateado que muestra la información de cada estudiante con su nombre, ID, todas las calificaciones y el promedio calculado
Pruébalo tú mismo
<?php
// Leer la entrada JSON
$input = trim(fgets(STDIN));
// Convertir JSON a array
$gradebook = (array)json_decode($input, true);
// Imprimir el encabezado
echo "===== REPORT CARD =====\n";
// TODO: Escribe tu código a continuación
// Recorrer cada estudiante en el libro de calificaciones
// Para cada estudiante:
// - Imprimir su nombre
// - Imprimir su ID
// - Imprimir todas sus calificaciones
// - Calcular e imprimir su promedio (redondeado a 2 decimales)
// - Añadir una línea en blanco entre estudiantes (excepto después del último)
?>Todas las lecciones de Lógica y Flujo
1Funciones avanzadas
Funciones anónimasClosures y 'use'Funciones de flechaFunciones callbackUso de 'call_user_func'Funciones variablesPaso por referenciaFunciones recursivasResumen: Miscelánea de funciones4Arreglos multidimensionales
Crear un arreglo 2DAcceder a elementos de un arreglo 2DModificar elementos de un arreglo 2DIterar con bucles anidadosArreglos asociativos 2DResumen: Ejercicio de cuadrícula simple2Manipulación avanzada de arrays
Agregar con 'array_push'Eliminar con 'array_pop'Agregar con 'array_unshift'Eliminar con 'array_shift'Fusionar arrays indexadosFusionar arrays asociativosExtraer con 'array_slice'Valores con 'in_array'Claves con 'array_search'Resumen: Ejercicio de Playlist5Registro de Calificaciones
Configuración del Proyecto: Estructura de DatosAgregar un Nuevo EstudianteAgregar una Calificación a un EstudianteCalcular el Promedio del EstudianteEncontrar al Mejor EstudianteGenerar un Reporte de Calificaciones3Ordenar Arrays
Ordenar arrays indexados de forma ascendenteOrdenar arrays indexados de forma descendenteOrdenar arrays asociativos por valorOrdenar arrays asociativos por claveOrdenación por orden naturalOrdenación personalizada con 'usort'Resumen: Ordenar tablas de clasificación