Matriculaciones

Queremos simular las modificaciones de la matrícula de estudiantes a asignaturas de la FIB. Al inicio se leerá la matrícula original de estudiantes i después el programa ofrecerá un menú de opciones:

Después de ejecutar la opción "fin" y salir del menú, se escribe en orden alfabético la relación de asignaturas que se han matriculado en algún momento (aunque se hayan anulado sus matrículas), y el número de estudiantes que las van a cursar. Además, también se escribirá por orden alfabético la relación de estudiantes que tienen asignaturas matriculadas (no aquellos que hayan anulado todas las asignaturas que hubieran matriculado), seguido de las asignaturas que van a cursar.

Entrada

Primero se lee el número de estudiantes matriculados (un entero), y luego los correspondientes nombres de estudiantes seguidos de las asignaturas matriculadas. Cada estudiante y sus asignaturas ocupan una línea, y el estudiante es un solo string sin espacios, y las asignaturas son también strings separados por espacios.

Las opciones de menú tienen un formato variable pero empiezan siempre por la opción como un string, i en cada caso le siguen los datos necesarios para ejecutar la opción, que son un nombre de estudiante o de asignatura, o ambos. No hay que suponer que las opciones de menú estan en líneas separadas, pueden estar todas seguidas.

Salida

La salida consiste en una parte con la salida de cada una de las opciones del menú indicadas a la entrada, cuyas opciones tienen la salida siguiente:

Una vez detectada la opción “fin”, el programa muestra un listado de las asignaturas y el número de matriculados, ordenado por nombre de asignatura, con una asignatura por línea, y con una línea vacía al final.

Después se muestra un listado de los estudiantes, ordenado por nombre de estudiante, y las asignaturas que cursan, ordenadas por nombre de asignatura, y con una línea vacía al final.

Observación

Nota: es conveniente que uses la clase stringstream y la acción getline para poder leer secuencias sin centinela delimitadas por el salto de línea. Recuerda que al leer un entero, hay que leer un getline extra para consumir el salto de línea.

Información del problema

Autoría: PRO2

Generación: 2026-01-25T21:39:24.879Z

© Jutge.org, 2006–2026.
https://jutge.org