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

Examen #2 [solución]

      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. ¡No haga más de lo que se le pide!

1) [25 pts] Considere la clase de números racionales que usted implementó en la Tarea #3.

1.a) [10 pts] Haga la declaración C++ de la clase TRational, pero en lugar de usar dos campos numéricos "(num, den)" en el Rep de la clase, use un lista en donde se almacen esos valores. Suponga que, en su clase TRational, los números enteros se representan con una lista que tiene un único elemento, y el cero con la lista nula.

1.b) [5 pts] Implemente la operación privada TRational::Divide(const TRational&).

1.c) [5 pts] Implemente operator / (const TRational&, const TRational&).

1.d) [5 pts] Discuta las ventajas y desventajas de usar la lista como Rep para números racionales.

2) [25 pts] Use la implementación de su clase TList, que programó en la Tarea #4, para implementar la operación TList::Reverse().

2.a) [5 pts] Describa cuál es el modelo (diagrama) que usted usó en su implementación. Describa también el Rep que usó. Justifique por qué escogió ese modelo.

2.b) [10 pts] Especifique la operación TList::Reverse().

2.c) [10 pts] Implemente la operación TList::Reverse().

3) [25 pts] Considere los iteradores que usted usó en la Tarea #5 para implementar polinomios.

3.a) [4 pts] Explique qué es un iterador.

3.b) [3 pts] Incluya una sección de código C++ que muestre cómo se usa un iterador.

3.c) [8 pts] Especifique todas las operaciones de un iterador que permita recorrer, en orden inverso, todos los elementos de la lista.

3.d) [10 pts] Implemente el iterador. Asuma que el Rep de la lista es un puntero al último elemento, y que la lista es circular.

 

4) [25 pts] Escriba el programa LNGST.c++ que lea un archivo y cuenta la cantidad de líneas que contiene, y que indique también cuál es la longitud de la línea más larga del archivo. El formato de salida del programa es el siguiente:
C:\> lngst archivo.*
  lines:max    file: line
   5345:40     archivo.uno: 123456789.123456789.123456789.123456789
    125:850    archivo.dos: 123456789.123456789.123456789.123456789. >>>
   2235:26     archivo.txt: El Pacuare está en peligro

      Recuerde que un renglón puede ser arbitrariamente grande, de varios megabytes de longitud. Sin embargo, limítese a imprimir únicamente los primeros 40 caracteres del renglón. Cuando el renglón sea más largo, imprima los símbolos ">>>" al final. Para facilitar su trabajo, no es necesario que el programa procese varios archivos desde la línea de comandos.

Soluciones

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