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

Documentos relacionados