Escribe una miniaplicación que lea un conjunto de estudiantes y ofrezca la posibilidad de aplicarle los siguientes tratamientos.
Organiza el programa principal como un proceso iterativo que, tras leer el conjunto, lea un valor entre -1 y -6 indicativo de la opción que queremos aplicar (la opción -6 será la de terminar el programa), después lea los datos necesarios para ella y proceda a aplicarla.
Observa que las opciones -1, -2, -3 y -5 corresponden a operaciones que ya existen en la clase Cjt_estudiants, por lo que solo necesitarás comprobar la precondición de las mismas antes de realizar las correspondientes llamadas. En caso de no cumplirse la precondición no debe realizarse la llamada, simplemente ha de escribirse un mensaje informando de la situación. En algunos casos necesitarás también operaciones de la clase Estudiant.
La opción -4 requiere programar una operación nueva en el propio fichero solution.cc (o como se llame tu solución). Dicha operación estará basada en operaciones de las clases Estudiant y Cjt_estudiants. Para evitar problemas de precisión con el tipo double al realizar los redondeos, copia y usa el siguiente código en tu solución
double redondear(double r)
{
return int(10.*(r + 0.05)) / 10.0;
}
Entrada
Una secuencia de instrucciones, definidas mediante los valores de -1 a -6, cada una con datos en el formato adecuado, que se puede deducir del juego de pruebas público.
Salida
Los resultados o los mensajes producidos por las instrucciones de la entrada. El formato exacto se puede deducir del juego de pruebas público.
Observación
Solo has de entregar el programa principal, que deberá contener los #include necesarios para poder usar las clases Estudiant y Cjt_estudiants. Importante: usa las versiones de dichas clases que te proporcionamos con los “public files” (icono del gatito).
Como siempre, valida tu solución con el juego de pruebas público y prueba otros casos interesantes antes de subirla al Jutge, como por ejemplo que el conjunto esté vacío.
Input
3 444 4.44 222 2.22 111 323 -5 -2 111 -3 111 1.11 -5 -2 111 -2 555 -1 111 4 -3 555 5 -5 -4 -5 -1 777 777 -5 -1 333 3.22 -3 333 3.33 -4 -5 -1 555 11 -1 222 11 -5 -6
Output
111 NP 222 2.22 444 4.44 el estudiante 111 no tiene nota 111 1.11 222 2.22 444 4.44 el estudiante 111 tiene nota 1.11 el estudiante 555 no esta el estudiante 111 ya estaba el estudiante 555 no esta 111 1.11 222 2.22 444 4.44 111 1.1 222 2.2 444 4.4 111 1.1 222 2.2 444 4.4 777 NP 111 1.1 222 2.2 333 3.3 444 4.4 777 NP el estudiante 222 ya estaba 111 1.1 222 2.2 333 3.3 444 4.4 555 NP 777 NP