Universidad de Costa Rica
|
|
Duración: tres 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! ¡Conteste todas las preguntas!
1) [25 pts]
Considere la implementación de su clase
TList
, que
programó en la
Tarea #4.
1.a) [10 pts] Especifique las operaciones de inserción y borrado que caracterizan a una cola.
1.b) [10 pts] Implemente las operaciones que especificó en el punto anterior, basándose en las operaciones de la lista, pero cuide de no accesar la parte privada de la lista, pues será penalizado si accesa directamente el Rep de la lista.
1.c) [5 pts] Explique porqué en el lenguaje C++ es posible manterne el ocultamiento de datos sin sacrificar eficiencia.
2) [25 pts]
Use la implementación de su clase
TList
, que
programó en la
Tarea #4, para implementar la
operación TList::Delete_Every_Nth()
.
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::Delete_Every_Nth()
.
2.c) [10 pts]
Implemente la operación
TList::Delete_Every_Nth()
. Cuídese bien de
usar únicamente las operaciones públicas de la
lista, pues será penalizado si accesa directamente el
Rep de la lista.
3) [25 pts] Considere una lista cuyo Rep incluye dos puntero: uno al primer nodo de la lista y otro al último.
3.a) [5 pts]
La operación TList::Peck(here,oL,there)
(picotear) toma un valor de la lista "oL
" y
lo traslada a "*this
". Los iteradores
"here
" y "there
" apuntan a cada una de
las listas. El valor a trasladar es el que sigue a
"there
" en "oL
". Especifique la
operación TList::Peck()
, y no olvide incluir
algunos ejemplos de cómo funciona.
3.b) [10 pts]
Especifique la operación TList::KBlock()
, que
funciona de manera similar a TList::Peck()
, pero que
permite trasladar un grupo de "n
" nodos.
3.c) [10 pts]
Implemente TList::KBlock()
. Cuídese bien de
usar únicamente las operaciones públicas de la
lista, pues será penalizado si accesa directamente el
Rep de la lista.
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.
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 " |
Adolfo Di Mare <adolfo@di-mare.com>.
|