Prof. Dr. Paul Bustamante



Documentos relacionados
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

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

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

Í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

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

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

Prof. Dr. Paul Bustamante

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

Prof. Dr. Paul Bustamante

Introducción a la programación orientada a objetos

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

Oficina Online. Manual del administrador

Plantillas: un mecanismo de polimorfismo

Curso Internet Básico - Aularagon

Examen escrito de Programación 1

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Manual de usuario Noticias y Accesos Directos en Facultades ÍNDICE

MANUAL DE CS-ALMACENES

INTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS

MANUAL DE AYUDA MODULO TALLAS Y COLORES

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

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

GMAIL (avanzado) 1. Accede a la web de Gmail, Te destacamos las funcionalidades que vamos a enseñarte a. 2. Vamos a enseñarte a:

Universidad de Zaragoza Manual de Usuario

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

MANUAL DE CS-ALMACENES (MAYO 2012)

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

Internet como herramientas de comunicación: El correo electrónico

Alta. En la plataforma. Uned- lued - Formatic. Patricia Rodríguez Mara Aguiar

1. Juego del Ahorcado

Modulo 1 El lenguaje Java

CURSO DE CORREO ELECTRÓNICO (OUTLOOK EXPRESS) MODULO AVANZADO

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

Manual básico de Outlook Express

PROGRAMA GANES MANUAL BREVE DE FUNCIONAMIENTO. Este manual, se divide en tres partes para que sea cómoda su utilización

SMS Gestión. manual de uso

PS.Vending Almacén Pocket PC

Manual Instalación de certificados digitales en Outlook 2000

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de rol gestor de GAV para moodle 2.5

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

Sistema de Inscripciones en Línea de la Olimpiada Mexicana de Matemáticas, Delegación Yucatán MANUAL DE USUARIO

Guía de usuario para el acceso al recibo de nómina mediante la intranet de la Conselleria

Manual para el uso del Correo Electrónico Institucional Via Webmail

PLATAFORMA PASEN Escuela TIC 2.0 NOTA INFORMATIVA A PADRES Y MADRES

Novedades PhotoGestion 5

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

Tema: Arreglos de Objetos en C++.

Para trabajar este tema vamos a situarlo un poco más en el lenguaje común:

Guía de referencia para mytnt. mytnt. C.I.T Tecnología Aplicada al Cliente

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

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

Protocolo Traslado_envío datos personales

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

BASES DE DATOS - Microsoft ACCESS 2007-

PROCEDIMIENTOS DE TÍTULOS. Para solicitar los títulos al finalizar determinadas enseñanzas es preciso seguir un proceso en la aplicación Plumier XXI.

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

INSTALACIÓN Y REGISTRO

CREAR UNA CUENTA DE CORREO : GMAIL

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE USUARIO PARA LA GESTIÓN DE LISTAS EN LA APLICACIÓN INFORMÁTICA ORDENACIÓN-CENTROS

Proceso de cifrado. La fortaleza de los algoritmos es que son públicos, es decir, se conocen todas las transformaciones que se aplican al documento

Ejercicio 1 (3 puntos).-

MANUAL TIENDA VIRTUAL. Paseo del Gran Capitán, Nº 62, Salamanca. Telf.: Fax:

Remesas bancarias de Clientes

ACCESO AL SERVIDOR EXCHANGE MEDIANTE OWA

Prof. Dr. Paul Bustamante

Recuva funciona muy bien, siempre y cuando se cumplan dos factores fundamentales que son:

Accede a su DISCO Virtual del mismo modo como lo Hace a su disco duro, a través de:

Manual de uso de la Web

Manual Sistema Gestión Colegial SICOF. Version 2.0

PROCEDIMIENTO PARA INGRESAR AL CORREO DE REDP POR MEDIO DEL OWA (OUTLOOK WEB ACCESS) El procedimiento ingresar al correo de RedP es el siguiente:

BLOQUE 4: FRANQUEO, DEPÓSITO, ENTREGA, RECOGIDA Y DISTRIBUCIÓN DE CORRESPONDENCIA

Plataforma Educativa Manual del Docente Nivel II Módulo 3 Wiki

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

MANUAL DE CS-HERRAMIENTAS

Teclado sobre una PDA para Personas con Parálisis Cerebral

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: Fax.:

Gestión de Ficheros en ruralvía Recibos

Ejercicio 1 (2 puntos. Tiempo: 25 minutos)

Ayuda básica relativa al interfaz web

Colegio de Ingenieros de Caminos, Canales y Puertos. Manual de Gestión de correo electrónico y SMS

VJALQUILER VJALQUILER

Prof. Dr. Paul Bustamante

Manual de usuario investigador

file:///d:/users/coord%20tic/mis%20documentos/mis%20sitios%20web/web%20ntic.orgfree.com/man...

SMS PUSH SMS ENCUESTAS INTERNET FAX

FOROS. Manual de Usuario

MANUAL DE INSTALACIÓN

MANUAL DE USO Agencias de viaje NEOTURISMO.COM

CASO PRÁCTICO PRÉSTAMOS. VALIDACIÓN DE LA INFORMACIÓN

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

Cómo publicar una encuesta online creada con encuestafacil

Transcripción:

Carnet Nombre: Examen C++ Grupo A Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante

Pág.1 Índice 1. INTRODUCCIÓN... 1 2. EJERCICIO 1: AGENDA TELEFÓNICA (4.0 PTOS.)...1 3. EJERCICIO 2: OFICINA DE CORREOS (5.0 PTOS.)... 4 1. Introducción Algunas sugerencias con respecto al examen: verifique que tiene su Disco G:\ creado y que no tiene nada en él (ejercicios anteriores). Trate de realizar primero el ejercicio que crea que es más sencillo y deje el complicado para el final. Lea detenidamente los enunciados. 2. Ejercicio 1: Agenda Telefónica (4.0 ptos.) Ud. ha sido elegido para realizar un programa de una agenda telefónica, que posteriormente será introducido en una PDA. El programa principal debe contener el menú que se puede observar en la figura de la derecha. Existe en él 5 opciones que se describirán más adelante. Descripción del funcionamiento del programa: Opción 1, Agregar Contacto: Esta opción permitirá introducir los siguientes datos de una persona: o Nombre, Apellidos, Dirección y Teléfono (ver figura siguiente. Siempre que aparece en la consola el? significa que pide que el usuario introduzca los datos). Opción 2, Buscar Contacto: esta opción permite buscar un registro de la agenda (contacto) por medio del Apellido o el Teléfono (ver figura). o Si se busca por el Teléfono, se pedirá dicho número y en cuanto encuentre a la persona debe mostrar sus datos por la consola, y en caso de no encontrarlo, debe mostrar un mensaje. o Si se busca por apellido, hay que tener en cuenta lo siguiente: solo basta con introducir algunas letras del apellido para que muestre todos los contactos que hay con esas letras iniciales, incluso si solo se pone una letra, debe buscar todos los apellidos que empiecen son esa letra. Cuando encuentre los contactos, debe mostrar

Pág.2 toda la información en la pantalla (en la figura, se escribe Ga y encuentra todos los contactos cuyos apellidos empiecen por Ga ). Opción 3, Ver Agenda: es opción permite listar en la consola todos los contactos que hay introducidos en la Agenda, según el siguiente formato (al inicio poner la Posición que ocupa en la memoria, para poder borrar con más facilidad): Opción 4, Borrar Contacto: esta opción permite dar de baja a un contacto de la agenda (porque se ha cambiado de domicilio por ejemplo o porque ya no es nuestro amigo). En la siguiente figura podemos ver que para borrar el contacto nos pide la posición de la memoria. Cuando lo encuentra lo borrar y tiene que reordenar de nuevos nuestros contactos, para que cuando veamos de nuevo la agenda ya no aparezca (se ha borrado el 4, Luis Flores). Descripción interna del programa En este apartado se va a describir cómo debe ser internamente el programa. Para que sea modular y eficiente, el programa se ha dividido en varias funciones, las cuales tienen cada una su objetivo. Además, para la manipulación correcta de los datos y la sencillez en el paso de los argumentos a las funciones, se debe crear la estructura Agenda con los datos del contacto (Nombre, Apellidos, Direccion y Telefono). A continuación se presenta el esqueleto del programa: #include <iostream.h> #include <iomanip.h> #include <string.h>

Pág.3 struct Agenda char Nombre[10]; char Apellidos[20]; char Direccion[30]; long Telefono; ; int Menu(); Agenda AgregarContacto(); void BuscarContacto(Agenda Lista[],int num); void BorrarContacto(Agenda Lista[], int &num); void PrtCabecera(); void PrtContacto(Agenda tmp); void main() int num=0; Agenda lista[400]; while(true) int ret = Menu(); if (ret==5) break; if (ret==1) //numero de contactos //lista de contactos //Agregar // agregar contacto a la lista if (ret==2) //Buscar // llama a la fun. BuscarContacto; if (ret==3) //ver Lista // bucle que llamar a la función PrtContacto; if (ret==4) //Borrar // llamar a la función BorrarContacto La función AgregarContacto no recibe ningún argumento y sólo devuelve una variable del tipo Agenda (recordar que Agenda es una estructura, y como tal, es un nuevo tipo de datos del usuario, que puede ser tratado como cualquier tipo de datos). En esta función se pedirán los datos necesarios (Nombre, Apellidos, Direccion y Telefono). La función BuscarContacto recibe la lista entera y el número de contactos que hay en ella. Dentro de esta función se debe pedir el teléfono o el apellido (según las condiciones dadas anteriormente). Una vez que encuentra el contacto, llamará a la función Prtcontacto con el/los elemento/s de la lista que hubiese encontrado. La función PrtContacto recibe como argumento 1 variable del tipo Agenda, la cual la imprimirá en la consola según el formato que se ha propuesto en la figura de la opción 3. La función BorrarContacto recibe dos argumentos, la lista de los contactos y el número de elementos que hay en ella. Dentro de esta función hay que pedir al usuario la posición del elemento a borrar de la lista, actualizar la variable num (numero de elementos) y reordenar la lista. Nota: Se debe mantener la estructura main() así como las funciones. Distribución de puntos: Agregar Datos: 0.5 Listado Agenda: 0.75 Buscar Datos: Por Apellido: 1.0 Por teléfono: 0.5 Borrar y reordenar: 0.75 Resto (main): 0.5

Pág.4 3. Ejercicio 2: Oficina de Correos (5.0 ptos.) A Ud. le han contratado para que haga un programa que permita llevar el control del franqueo de una oficina de correos, para lo cual nos basaremos en las clases, la herencia y el polimorfismo, técnicas del C++ que ya sabe y domina. El programa debe permitir introducir al sistema Cartas Normales y Cartas Certificadas, las cuales tienen un coste diferente. Por ahora sólo haremos el programa para el ámbito nacional, con el fin de poder luego actualizarlo e incluir el ámbito internacional. En la siguiente figura se puede observar el funcionamiento del programa: Hay un menú con 5 opciones. Las 2 primeras opciones permitirán introducir los datos de las cartas. Para cada una de las dos opciones hay que pedir siempre los datos del remitente y el destinatario, para lo cual se ha creado la clase Datos: class Datos private: char nombre[20]; char direccion[30]; char ciudad[15]; long codpostal; public: friend istream& operator>>(/* poner argumentos */) //poner código friend ostream& operator<<(/* poner argumentos */) //poner código ; Esta clase tiene los miembros privados nombre, direccion, ciudad y codpostal. No tiene ningún método ni constructor, ya que los datos se pedirán y se sacarán a la consola usando la sobrecarga de los operadores >> y <<. Para el franqueo de Cartas Normales se ha creado la clase Carta, la cual no tiene ningún constructor y tiene los siguientes miembros: 3 variables: Datos remitente, Datos destinatario y double precio. El método virtual VerFranqueo, que sacará por consola todos los datos: remitente, destinatario y precio del franqueo. El método CalculaFranqueo, que lo único que hará será poner el valor a la variable precio: en cartas normales el precio es de 0.3. Y hay que sobrecargar el operador >> para pedir los datos. Ver figura adjunta para pedir los datos de una Carta Normal. class Carta protected: Datos remitente; Datos destinatario; double precio; public: friend istream& operator>>(/* poner argumentos */);

Pág.5 double CalculaFranqueo(); virtual void VerFranqueo(); ; Para el franqueo de Cartas Certificadas se ha creado la clase CartaCertificada, la cual es una clase derivada de la clase Carta. Esta clase tiene un constructor que recibe como datos el peso y si es urgente o no, para lo cual se han creado las variables double peso y bool urgente respectivamente. El resto de datos se piden sobrecargando el operador << y se sacan los datos a la consola a través del método VerFranqueo. Esta clase también tiene redefinido el método CalculaFranqueo, al cual se le aplicarán las siguientes reglas: Si la carta pesa menos de 20gr, el precio es: urgente: 2.5 y no urgente: 2.0 Si la carta pesa más de 20gr, el precio es: urgente: 0.125 /gr y no urgente: 0.1 /gr. En la figura anterior se pueden ver los datos que se piden al introducir una carta certificada: el peso y si es urgente o no (para calcular el precio). El resto de datos se piden de la misma forma que en la carta normal, es decir el remitente y el destinatario. A continuación se muestra la estructura de la clase CartaCertificada: class CartaCertificada : public Carta protected: bool urgente; double peso,precio; public: CartaCertificada(double pes, bool urg); friend istream& operator>>(/* poner argumentos */); double CalculaFranqueo(); void VerFranqueo(); ; Mediante la Opción 3 del menú se podrán ver todas las cartas que se han franqueado, con los respectivos datos de remitente y destinatario, así como el precio del franqueo. Ver figura: La opción 4 (1.0 pto) del menú debe permitir grabar un fichero de texto con un reporte de las cartas franqueadas, con todos los datos que aparecen en la consola de los remitentes y destinatarios, así como el precio del franqueo, y además, muy importante, que imprima la Oficina de Correos, El nombre del operador y la Fecha (estos datos se deben pedir por la consola). Esta opción tiene 1 pto. A continuación se muestra la estructura de lo que podría se la función principal main(): void main() Carta *Lista[30]; //lista de objetos

Pág.6 int opc,num=0; //más variables necesarias while(1) opc = Menu(); if (opc==1) //crear objeto Carta y agregar a Lista else if(opc== 2) //crear objeto CartaCertificada y agregar a Lista else if(opc== 3) //Imprimir datos a consola, por medio de VerFranqueo else if(opc== 4) //Grabar reporte else if(opc== 5) //liberar memoria de objetos y terminar programa Si necesita crear más funciones de las que se han puesto puede hacerlo, sin cambiar las protecciones de las variables en las clases, es decir que las variables que son privadas o protegidas se deben dejar tal cual, caso contrario se descontarán puntos. Nota: Se deben hacer todas las clases y utilizarlas, manteniendo también la estructura main(). Distribución de puntos: Opción 1: 1.0 Opción 2: 1.5 Opción 3: 1.0 Opción 4: 1.0 Resto (main): 0.5 Suerte!