Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1201
I Semestre 2004
[<=] [home] [<>] [\/] [=>]
CI-1201 Programación II

Examen de Suficiencia [solución]

      Este examen tiene 2 partes. La primera consiste en hacer un programa en el lenguaje C++ para lo que tiene 24 horas para entregar su programa completo. Use Visual Studio o Borland C++ para programar su solución.

      Luego de que entregue la primera parte del examen, puede hacer la segunda, para la que tiene un total de 3 horas consecutivas.

Primera Parte (Proyecto programado) [solución]

      Como programador máximo de la firma spamTico.com usted ha conseguido varios miles de archivos de texto que contienen, además de otras cosas, cientos de miles de direcciones de correo electrónico. Usted necesita escribir un programa para extraer todas esas direcciones, y decide implementarlo en C++.

      Explique cuáles hileras de un archivo de texto son direcciones de correo electrónico. Recuerde que es válido usar el guión "-", el caracter de subrayado "_" y también el punto ".". Lo que distingue a las direcciones de correo electrónico es la letra de arrobas "@". Recuerde que los archivos de entrada pueden contener cualesquiera caracteres ASCII válidos, para cuya codificación se usa el rango numérico [0..127], aunque su programa debe permitir manejar archivos con letras en el rango superior [128..255].

      Algunas direcciones válidas son las siguientes:

71572.341@compuserve.com
koenraad_lecot@ecci.ucr.ac.cr
atorres@ic-itcr.ac.cr
e913570@32am.wap.ucr
mike.patrick@tecapro.com
francisco-jose@mata.names

      En su implementación, lea cada archivo renglón por renglón. Utilice un diccionario STL, de tipo map<>, para almacenar cada una de las direcciones que encuentre. Además, asocie a cada dirección una lista con todos los renglones en los que esa dirección aparece, de manera que sea posible producir un listado que muestre cada dirección junto con los renglones que muestran el contexto para esa dirección. Una parte de ese listado podría ser la siguiente:

koenraad_lecot@ecci.ucr.ac.cr
- Hola, te envío de nuevo mi dirección koenraad_lecot@ecci.ucr.ac.cr porque ya la habías pedido
- No hemos sabido si el señor Lecot, koenraad_lecot@ecci.ucr.ac.cr, ha comezado su
- "Koenraad Lecot" <koenraad_lecot@ecci.ucr.ac.cr>
- )(/&%%&%$·%$&%(/=)/(/%/&...- koenraad_lecot@ecci.ucr.ac.cr ----99(()/(/&/&%/
atorres@ic-itcr.ac.cr
- atorres@ic-itcr.ac.cr
- No es posiblel encontrar al usuario "atorres@ic-itcr.ac.cr" en la base de datos
- atorres@ic-itcr.ac.cr
- atorres@ic-itcr.ac.cr

      No hace falta que la lista de renglones de contexto aparezca ordenada, o sin duplicados. Haga la documentación de su programa, e incluya un diagrama en que explique cómo usa los objetos que requiere para hacer el programa.

Segunda Parte (Teoría) [solución]

Resuelva 3 de las 4 preguntas del siguiente examen, disponible en Internet:
      http://www.di-mare.com/adolfo/cursos/2000-2/p2-ea-f.htm

      Duración: dos horas. Lea bien el examen antes de hacerlo. El examen es a libro abierto. Cuenta la documentación. Cuenta la redacción y la ortografía. Puede hacer el examen con lápiz. Resuelva tres de las cuatro preguntas. ¡No haga más de lo que se le pide!

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2004
Derechos de autor reservados © 2004
[home] <> [/\]