Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1

Documentos relacionados
Examen Septiembre Curso Programación en C++ Pág. 1

1. Introducción. 1.1 Ejercicio 1: Estación Meteorológica (4.0 pts.) Ejercicio 2: Gestión Académica: Alumnos (5.0 pts.)...

Prof. Dr. Paul Bustamante

Índice ÍNDICE EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.) EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Examen Junio- Grupo B Lunes 17 de Junio - Programación en C++ Pág. 1

Prof. Dr. Paul Bustamante

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)

Introducción al tipo de dato ARRAY

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

Ejercicio 1 (3 puntos).-

3.1. Guardar un libro de trabajo

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Prof. Dr. Paul Bustamante

Estructura de datos y de la información Boletín de problemas - Tema 7

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

Práctica 1 El juego de los chinos

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

Las propiedades de la clase en java es el equivalente a las variables globales en lenguajes estructurados como el C.

Programación Orientada a Objetos en Java

1.- CREAR UNA BASE DE DATOS CON ACCESS

LABORATORIO 1 OPERACIONES DE ENTRADA Y SALIDA

Mi primer proyecto en Dev-C++

UNIDAD 1. LOS NÚMEROS ENTEROS.

TIPOS DE DATOS DEFINIDOS POR EL PROGRAMADOR: Estructuras CONTENIDOS

Pasar del correo en IMAP o Webmail con el servicio de correo de Generanet S.L. al servicio de correo de propio con soporte técnico con ValdeSoftware

Tema: Arreglos de Objetos en C++.

BASES DE DATOS - Microsoft ACCESS 2007-

MANUAL TARIFICADOR. Clic aquí Descargar Tarificador

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

Programación Orientada a Objetos con Java

SOLUCION EXAMEN junio 2006

Programa diseñado y creado por Art-Tronic Promotora Audiovisual, S.L.

Introducción a la programación orientada a objetos

Ecuaciones de primer grado con dos incógnitas

COMO COMPRAR EN NUESTRA TIENDA?

MANUAL TARIFICADOR A continuación encontrara un Paso a Paso de la instalación del tarificador.

Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación

CURSO INSTALACION E IMPLEMENTACION ALOJA SOFTWARE HOTEL MODULO 12: Empresas y Agencias

Tutorial Básico de vbscript

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Tema: Clases y Objetos en C++.

Crear una Nueva Solución Vacía:

COMO COMPRAR EN NUESTRA TIENDA H2OTEK?

3º ESO BLOQUE: ELECTRICIDAD HOJA DE CÁLCULO EXCEL. Se plantean tres actividades para iniciar a los alumnos en la hoja de cálculo Excel.

PS.Vending Almacén Pocket PC

COPIAS DE SEGURIDAD CON COBIAN BACKUP INSTALACIÓN Y CONFIGURACIÓN

Tema: Herencia Simple y Múltiple en C++.

CREAR UN FORMULARIO PARA LA WEB DE NUESTRO CENTRO

Práctica 2: Simón dice

Modulo 1 El lenguaje Java

Estructura de datos tipo vector.

Como verás pone Microsoft Office y si te colocas sobre esta línea debería salir:

Solución al Examen de Prácticas de Programación (Ingeniería Informática)

Clases y Objetos. Informática II Ingeniería Electrónica

Contenidos. Gestión dinámica de memoria. Gestión dinámica de memoria. Introducción. 1. Introducción 2. El operador NEW 3. El operador DELETE

Examen escrito de Programación 1

CÓMO AÑADIR UN FORMULARIO NUEVO O MODIFICAR EL DE CONTACTO DE LA WEB

Guía de uso del Cloud Datacenter de acens

Prof. Dr. Paul Bustamante

Antes de construir tu base de datos es conveniente saber que tipos de datos vas a almacenar y como distribuirlos.

República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores

1. Solicitud Acreditación 9 3. Descarga e instalación Copia de seguridad 14

Porcentajes. Cajón de Ciencias. Qué es un porcentaje?

Tema 6. Reutilización de código. Programación Programación - Tema 6: Reutilización de código

Java Inicial (20 horas)

Instalación de DRIVER de mochila

Apéndice A Instalación de Visual Studio.NET

Programación. Ejercicios Tema 4 Estructuras de Control Repetitivas

Tema 3: Herencia en C++ Programación Orientada a Objetos Curso 2008/2009 Begoña Moros Valle

INSTITUTO TECNOLOGICO de la laguna Programación Orientada a Objetos en C++

FDR Electrónicos. Su mejor opción en tecnología y servicios computacionales. Manual de uso para programa de facturación electrónica

OBTENCIÓN Y RENOVACIÓN (*) DEL CERTIFICADO ELECTRÓNICO DE EMPLEADO PÚBLICO DE LA FÁBRICA NACIONAL DE MONEDA Y TIMBRE (FNMT)

axtpv - Manual del usuario axtpv Profesional

Instalación de Microsoft Virtual PC

QUE ES UN CUPO? Cupos 1

SISTEMAS DE NUMERACIÓN.

INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO

ALGORITMICA Y PROGRAMACION POR OBJETOS I

1) Aplicación Inp. Si has llegado hasta aquí poco te podemos decir ya de la misma. Seguimos.

Software Criptográfico FNMT-RCM

- A continuación, se nos abrirá la siguiente ventana pidiendo contraseña, que el cliente haya especificado al instalar Wingest 7

ISTP CIDET COMPUTACION E INFORMATICA ARREGLOS EN JAVA

Prof. Dr. Paul Bustamante

INSTALACIÓN DE MEDPRO

Prof. Dr. Paul Bustamante

CONFIGURACIÓN BÁSICA DE UNA VPN EN WINDOWS XP PROFESIONAL

Servicios Educativos Del Estado De Chihuahua Sistema Integral de Presupuestos y Materiales. Indice. Introducción Barra de Herramientas...

El control de la tesorería consiste en gestionar desde la aplicación los cobros y pagos generados a partir de las facturas de venta y de compra.

Práctica 1 SISTEMAS OPERATIVOS. Introducción...

Manual de Procedimiento

MANUAL DE INSTALACIÓN

TEMA 20 EXP. WINDOWS PROC. DE TEXTOS (1ª PARTE)

Ejercicios - Persistencia en Android: ficheros y SQLite

Prof. Dr. Paul Bustamante

Transcripción:

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio 3: Herencia. Clase Agencia (4.5 ptos.)... 4 Antes de empezar a desarrollar los ejercicios del examen, es conveniente que revises que tienes creado tu disco G:\. En él vas a poner todos los ejercicios. Lee atentamente las indicaciones del ejercicio y debes hacer los programas conforme se te indica en este cuadernillo, es decir, si te dicen que desarrolles el programa con 3 funciones, debes hacerlo así; si dice que las variables de las clases deben ser privadas, así debes declararlas. 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.) Para empezar a hacer este ejercicio, crea el Proyecto Maquina en tu disco G:\ y en él crea el fichero maquina.cpp, que es donde vas a escribir el código del ejercicio. A continuación se te explica lo que se pretende conseguir con este ejercicio: Has sido elegido para hacer el programa de una máquina expendedora. La máquina debe contener inicialmente 10 monedas de cada una de las siguientes: 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02 y 0.01. Es decir habrá 10 monedas de 2, 10 de 1 y así sucesivamente. En total son 8 monedas diferentes. Debes tener dos array s, uno para las monedas y otro para las cantidades. Cada vez que el usuario hace una compra, el programa le pedirá que introduzca el importe que deposita (por ejemplo 5 ) y le pedirá también el precio que debe cobrar (por ejemplo 1.5 ), luego el programa debe decir cuantas monedas de 2, de 1 o de las que sean necesarias debe devolver al usuario (en nuestro ejemplo 1 de 2, 1 de 1 y 1 de 0.5, que en total suman 3.5 que es lo que debe devolver al comprador) y debe restar las cantidades que va devolviendo (en nuestro ejemplo ya le quedan 9 de 2, 9 de 1 y 9 de 0.5 ), de tal forma que si al final se queda sin monedas debe sacar un aviso por la consola que no tiene monedas para realizar al venta y NO dar por válida dicha operación. El programa además, debe tener un menú con 4 opciones: 1. Listado: Mostrar cuantas monedas quedan de cada una. 2. Agregar: debe permitir poder agregar más monedas. 3. Comprar: esta parte es la más importante. Aquí estará el algoritmo que determinará cuántas monedas de cada una debe utilizar para devolver al usuario. 4. Salir: para finalizar el programa. A continuación se muestra el esqueleto de lo que debe ser la función main(): void main() //.. definicion de array s y variables necesarias while(true) int opc=menu(); switch(opc) case 1: Lista(...); break; case 2: Agregar(...); break; case 3: Comprar(...); break; case 4: exit(0);

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 2 Como puedes ver, el programa principal llama a las funciones de Menu(), Lista(), Agregar() y Comprar(). Debes decidir qué argumentos deben ir en cada una de las funciones. Además debes agregar las definiciones y encabezamientos que hagan falta. La función Menú debe devolver un entero con la opción elegida por el usuario. En las siguientes figuras se muestran el menú que debe aparecer y la lista de la cantidad de monedas que se tienen de cada una, cuando se elige la opción 1: Cuando se elige la opción comprar (opción 3 del menú) y la opción 2 de agregar monedas, aparecerán las siguientes pantallas. Notar que en la opción de agregar monedas, si después hacemos un listado, veremos que han aumentado el número de monedas que hemos dado: Opción 3: Realizar una compra Opción 2: Agregar más monedas Como ayuda, recuerda el uso del operador % que devuelve el resto de una división. Es mejor que trabajes con enteros y luego hagas las conversiones. Por ejemplo una moneda de 0.01 es igual a 1 céntimo y una de 2 es 200 céntimos. La puntuación de este ejercicio es como sigue:

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 3 Menú: Si el menú funciona bien: 0.75 ptos. Lista: Si la función Lista muestra las cantidades de las monedas que quedan: 0.5 ptos. Agregar: si se pueden agregar más monedas y se ven con la función lista: 0.5 ptos. Comprar: 1.5 ptos. Aquí estará el algoritmo. Si el programa compila bien: 0.15 pts. Salidas por consola con formatos e indicadores: 0.1 ptos. Total: 3.5 ptos. 1.2 Ejercicio 2: Clase Circulo (1.0 pto.) Para el desarrollo de este ejercicio debes crear un proyecto nuevo, al que le pondrás Circulo. En él debes crear el fichero circulo.cpp para escribir el código que te explicaré a continuación. En este ejercicio debes crear dos clases: a. Clase Circulo: Esta clase debe tener tres variables miembro privadas: double x,y,r, las cuales van a representar la posición del círculo (x,y) y el radio ( r ).. - El constructor de esta clase debe permitir inicializar a cero dichas variables, al momento de la creación de los objetos. - Sobrecargar el operador >> para introducir los datos por teclado (x,y,r). b. Clase Point: Esta clase debe tener dos variables miembro privadas: double x,y, las cuales representan un punto en un sistema de coordenadas. También el constructor de esta clase debe permitir inicializar a cero las variables. - Sobrecargar el operador >> para introducir los datos por teclado (x,y). La clase Circulo debe tener una función miembro amiga EstaDentro(...) que permita verificar si un punto (objeto de la clase Point) está dentro de un círculo (objeto de la clase Circulo). Dicha función debe retornar verdadero o falso si el pto. está dentro o no del circulo. Recuerda que para calcular la 2 2 distancia que hay entre dos ptos. se usa la sgte. fórmula: dist = ( x2 x1) + ( y2 y1) A continuación se muestra el esqueleto de la función main(): void main() Circulo c1; cin >> c1; Point p1; cin >> p1; //creacion de un objeto de la clase Circulo //pide por teclado los datos del círculo: x,y,r //pide por teclado los datos del punto: x,y if ( EstaDentro(c1,p1) ) //llamada a la funcion amiga EstaDentro cout << "El Pto. P1 SI esta dentro del círculo C1"; else cout << "El Pto. P1 NO esta dentro del círculo C1"; cout << endl; Si hace falta crear más funciones dentro de cada clase o más variables, hay libertad de hacerlo. Lo único que hay que respetar es la estructura del programa main(). Incluir también todos los ficheros *.h que hagan falta.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 4 1.3 Ejercicio 3: Herencia. Clase Agencia (4.5 ptos.) Parte I: (3.5 ptos.) Para este ejercicio debes crear un proyecto nuevo Agencia y el fichero Agencia.cpp para escribir el código en él. Tanto las clases como main lo pondrás en este fichero. El ejercicio consiste en hacer un programa para una agencia de viajes. La clase base se llamará Agencia y las clases derivadas serán Turismo y Libre. La jerarquía de clases que debes seguir es la siguiente: Agencia Turismo Libre A continuación vamos a describir las variables miembro que deben tener las clases: a. Clase Agencia: 1) Tendrá 2 variables miembro privadas: i. char *nombre: para almacenar el nombre del cliente que hace la reserva. ii. long duracion: para almacenar los días de duración del viaje. 2) Tendrá 1 variable protected tipo static (una sola para todos los objetos), la cual tendrá el precio de la noche: static double precio (Esta variable debe ser inicializada en main() con el valor de 50 ). El constructor de esta clase NO tendrá argumentos y sólo se encargará de pedir el nombre al usuario. La duración del viaje debe ponerla la clase derivada. Esta clase debe definir la función void Display() para mostrar por pantalla los datos de la reserva. Debe ser o no virtual esta función? Queda a criterio del alumno. También queda a criterio del alumno ver si esta clase necesita o no destructor. class Agencia private: char *nombre; //el constructor pide el nombre long duracion; //debe pedirlo la clase derivada protected: static double precio; //precio del hotel... //escribir el resto ; b. clase Turismo: Esta clase tiene 2 variables miembro protegidas: 1) int tipo: para definir el tipo de alojamiento (1:SA 2:AD 3:MP 4:PC) 2) static int plazas: será una sola variable para todos los objetos, ya que el número de plazas es único. Cada vez que se crea un objeto, se debe decrementar el número de plazas (hacerlo en el constructor), de tal forma que cuando ya no queden plazas libres no permita hacer ninguna reserva más. Esta variable, al ser static, tiene que ser inicializada en main con 5 plazas. El constructor de esta clase NO tendrá argumentos y sólo se encargará de pedirlos por teclado. Pedirá dos cosas:

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 5 - El tipo de alojamiento (SA(1):solo alojamiento AD(2):alojamiento y desayuno y así sucesivamente). - La duración del viaje (los dias). Este dato debe ser pasado a la clase Agencia, que es la que tiene la variable long duración. Esta clase también debe redefinir la función void Display() para sacar la información por la consola. class Turismo: public Agencia protected: int tipo; static int plazas; //... escribir el resto ; c. Clase Libre: Esta clase también 2 variables miembro protegidas: 1) char *hotel: para almacenar el nombre del hotel 2) static int plazas: será una sola variable para todos los objetos, ya que el número de plazas es único. Cada vez que se crea un objeto, se debe decrementar el número de plazas, de tal forma que cuando ya no queden plazas libres no permita hacer ninguna reserva. Esta variable, al ser static, tiene que ser inicializada en main con 5 plazas. class Libre: public Agencia private: char *hotel; protected: static int plazas; public: Libre()... //más código ; El constructor de esta clase NO tiene argumentos, debe pedirlos al usuario. Que debe pedir? 2 cosas: El nombre del hotel y la duración del viaje (días). d. Programa principal main(): En el programa principal debe haber un menú con 5 opciones, las cuales pasamos a describir a continuación: 1) Ver Plazas libres: esta opción permitirá sacar por pantalla el número de plazas libres que quedan de Turismo y Libre. 2) Ver Reservas: esta opción sacará por pantalla todas las reservas que se hallan hecho hasta el momento. 3) Hacer Reserva de Turismo: permitirá hacer una reserva de Turismo (crear un nuevo objeto de la clase Turismo). 4) Hacer Reserva Libre: permitirá hacer una reserva Libre (crear un nuevo objeto de la clase Libre). 5) Salir: terminar el programa.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 6 Se tiene que crear un vector de punteros a la clase base Agencia para ir almacenando todos los nuevos objetos creados, de tal forma que cuando queremos imprimir la lista se puede hacer con un simple for. A continuación se muestra el esqueleto de lo que sería la función main(): //inicializar variables static de las clases #define NUM 20 void main() Agencia *lista[num]; //Vector de punteros While(true) //hacer Menú // 1. Ver Plazas Libres\n // 2. Ver Reservas\n // 3. Reserva de Turismo\n // 4. Reserva Libre\n // 5. Salir\n //según la opcion elegida, poner el código correspondiente //solo se sale del while por la opcion 5 Fig.1 Menú y Opción 1 elegida Fig. 2 Menú y Opción 3 elegida: introducir datos de Turismo Fig.3 Menú y Opción 4 elegida: introducir datos de Reserva Libre Fig.4 Opción 2: muestra las reservas y Opción 1 las plazas libres (se han restado las reservas) Si has llegado hasta aquí, tienes los 3.5 ptos. La distribución de los puntos es como sigue: 0.25 si el programa compila bien; 0.75 Programa main() con Menú bien hecho. 0.5 clase Agencia bien hecha; 1.0 clase turismo bien hecha; 1.0 clase Libre bien hecha.

Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 7 Parte II: (1.0 pto.) Para continuar con el ejercicio, es mejor que hagas un nuevo proyecto Agencia1 y crees un nuevo fichero Agencia1.cpp, en el que vas a copiar todo el código escrito hasta ahora en el fichero Agencia.cpp. Antes de ponerte a escribir más código (que te diré a continuación) prueba a compilar y ejecutar el programa para verificar que lo has hecho bien. Esta nueva parte consiste en agregar una nueva función para calcular el costo del viaje. Dicha función será double Costo() y debe ser redefinida en cada una de las clases. Debe ser virtual? Se aplicarán dos criterios diferentes para el cálculo del costo del viaje: 1. Clase Turismo: dependiendo del tipo de alojamiento, se aplicará un porcentaje al precio del hotel: a. SA: 0% b. AD: 10% c. MP: 20% d. PC: 40%. Sí la reserva es por 7 días o más, se hará un dcto. del 10% al costo total. 2. clase Libre: como este tipo de reservas no permite elegir el tipo de alojamiento, sólo se aplicará un dcto. del 10% para reservas de 5 o más días. La función Display() es la que debe llamar a la función Costo(). Para mostrar toda la información del viaje más el costo. Veamos cómo sería la nueva salida para la opción 2 del menú (ver reservas): Como puedes ver en la figura de la salida por consola, cuando queremos ver las reservas, aparece el costo del viaje, teniendo en cuenta los criterios explicados anteriormente. Por ejemplo para la reserva libre de 5 días, el precio del hotel es 50 el día y como 5 días o más se le aplican un 10% de dcto. el costo resulta 5*50*0.9=225. Lo mismo se aplica para la reserva de Turismo. El resto del programa debe seguir funcionando igual.