Grupo B
Transcripción
Grupo B
Examen Junio Grupo B Programación en C++ Pág. 1 ÍNDICE ÍNDICE ............................................................................................................ 1 1. Introducción. ........................................................................................ 1 1.1 Ejercicio 1: Notas Alumnos (4.0 pts.)........................................... 1 1.2 Ejercicio 2: Gestión Académica: Profesores (5.0 pts.) ................. 3 1. Introducción. Para el examen es importante verificar que se escriben los ejercicios en el directorio correcto de su disco G:\. Debe crear un directorio para cada uno de los ejercicios. Lea detenidamente el enunciado del ejercicio, y si no lo comprende muy bien, pregunte a las personas encargadas de la vigilancia. Con el fin de evitar los errores acumulados, es conveniente que cada vez que agregue líneas de código, compile y ejecute el programa para ver que todo funciona bien. 1.1 Ejercicio 1: Notas Alumnos (4.0 pts.) A Ud. le ha encargado un profesor que haga un programa sencillo para introducir los datos de las notas de sus alumnos (y su número de carne) y así poder obtener algunas estadísticas de lo que ha ocurrido al final de curso, tales como Porcentajes de Suspendidos, Aprobados, Notables, Sobresalientes y MH, siguiendo el siguiente criterio: • Suspenso: Nota menor 5.0 • Aprobado: Nota entre 5.0 y 6.50 • Notable: Nota entre 6.50 y 7.5 • Sobresaliente: Nota entre 7.5 y 10 • MH: Nota mayor que 10.0 Además, dicho programa le debe permitir mostrar el listado de alumnos introducidos ordenados de forma ascendente por Carné o por la Nota. El programa debe ser lo más estructurado posible, por lo que hay que tratar de utilizar funciones para cada una de las opciones del menú. A continuación se muestra la estructura del programa principal: void main() { int opc,num=0; double *notas; //vector para notas long *carnet; //vector para numeros de carnet while(true){ opc=Menu(..) switch(opc){ case 1: /*Pedir Datos y guardar en vectores*/; break; case 2: MostrarDatos(..); break; case 3: Estadisticas(..); break; case 4: /* Limpiar pantalla */ break; case 5: /* Fin del programa */; } } } Debe usar solo dos array’s (carnet y notas) para almacenar los datos y poder trabajar con ellos. A las funciones se le pasan estos array’s como argumentos y el número de alumnos (este dato es lo primero que se debe introducir). Informática II – Fundamentos de Programación - Tecnun Examen Junio Grupo B Programación en C++ Pág. 2 En la Fig. 1 se muestran las distintas opciones del menú que debe salir por consola. A continuación se describen cada una de las opciones (y se detallan los ptos. asignados a cada una de éstas): • • • • • Opción 1: Primero introducir número de alumnos y luego introducir los datos de los alumnos (Carnet y Nota). Ver Fig.2 (1.0 ptos.). Opción 2: Permite mostrar los datos que hemos introducido en la consola, pero ordenados en forma ascendente, ya sea por carnet o por Nota . Ver Fig. 3. (1.5 ptos con formatos, tal como se ve en la figura) Opción 3: Datos estadísticos. Sacar por consola los porcentajes de aprobados, suspensos, notables, sobresalientes y MH. Ver Fig. 4. (1.0 ptos, también contará el formato como se saque por consola ) Opción 4: Limpiar la pantalla. Opción 5: Fin del programa (opción 4 y 5 y estructura de main 0.5 ptos.) Fig. 1 Fig. 2 Rr Fig. 3 Fig. 4 Este ejercicio se debe guardar en el subdirectorio Ejer1. Informática II – Fundamentos de Programación - Tecnun Examen Junio Grupo B Programación en C++ Pág. 3 1.2 Ejercicio 2: Gestión Académica: Profesores (5.0 pts.) Ud. forma parte de un grupo de trabajo y ha sido elegido para hacer una parte de un programa de gestión académica, la parte de introducción datos de Profesores. El ejercicio consiste en introducir los datos personales de un Profesor (Nombre y Apellidos y DNI) y los datos académicos del mismo (Categoría y Asignaturas que imparte con nombre y Número de créditos). La jerarquía de clases que se va a seguir para el programa es la siguiente: Persona ¿? Profesor Existe una clase base, la clase Persona, que tiene los datos fundamentales de una persona (Nombre y Apellidos, DNI, etc.). Recuerde que esta clase servirá de base también para la otra parte del programa (que ud. no realizará). A continuación se describen las clases que intervienen: Clase base Persona: class Persona { protected: long DNI; char *Name; //Nombre y Apellidos public: Persona(. . .); ~Persona(); //Otras funciones miembro y “amigas” que necesite }; Con el fin de simplificar un poco el programa, la clase Persona sólo tiene 2 variables: • long DNI: para almacenar el DNI de una persona • char *name: para el nombre y apellidos. Clase derivada Profesor: Partiendo de la clase base Persona, tenemos que crear una nueva clase derivada, la clase Profesor, a la cual le vamos a agregar nuevas variables, como por ejemplo la categoría, numero de asignaturas y un puntero a Asignaturas (una nueva clase que más adelante explicaremos). Veamos la estructura de la clase Alumno: class Profesor: public Persona { int Categoria; //1: Prof.Asociado 2:Adjunto 3: Ordinario int numAsig; //Num. de asignaturas que imparte Asignatura *asig; //para crear un vector dinámico de asignaturas public: Alumno(. . .); ~Alumno(); //Otras funciones miembro y “amigas” que necesite }; La clase Asignatura es una clase que tiene sólo dos variables: el nombre de la asignatura y los créditos. Veamos cómo es dicha clase: class Asignatura { char *Name; double Creditos; public: Informática II – Fundamentos de Programación - Tecnun Examen Junio Grupo B Programación en C++ Asignatura(. . .); ~Asignatura(); //Otras funciones miembro y “amigas” que necesite }; Pág. 4 NOTA: Para todas las clases, Ud. debe poner los constructores y destructores según mejor le convenga. También puede agregar las funciones que necesite. Función Principal main(): Desde main tenemos que crear los objetos y destruirlos, para lo cual se tiene que desplegar un menú con las siguientes opciones (1 pto): Fig. 5 Fig. 6 La Opción 2 permite introducir los datos de un nuevo Profesor (ver Fig. 6). Observe que el programa primero pide los datos del profesor (Nombre, DNI y Categoría) y el número de asignaturas y luego pide el nombre y los créditos de cada una de las asignaturas. (1.5 puntos) La Opción 3 permite mostrar por consola los datos introducidos de los profesores. Observe que al final de cada profesor, están los créditos totales que imparte el profesor (esto se debe hacer en una función miembro de la clase Profesor) (1.5 puntos). En la siguiente figura se puede ver cómo será la salida por consola: Fig. 7 La Opción 4 permite limpiar la pantalla, esto es, borrar todo y volver a poner sólo el menú. La Opción 5 permite grabar en un fichero en formato texto los datos introducidos (tal como aparecen en la consola). Esta opción tiene un peso de 1.0 punto. Si utiliza sobrecarga de operadores para pedir datos y sacarlos por consola, tendrá un 0.5 puntos adicionales a los 5.0 puntos de este ejercicio. Recuerde que en main deben crear los objetos Profesor de forma dinámica (con new) y agregarlo a alguna lista que tenga (queda a su criterio hacerlo de la forma que más le convenga). Informática II – Fundamentos de Programación - Tecnun