Universidad de Costa Rica
|
|
|
|
|
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 todas las preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] En esta pregunta usted trabajará con matrices ralas, o sea, con matrices que tienen una gran cantidad de valores iguales.
1.a) [8 pts] Escriba la declaración de la clase
Matriz_Rala que tiene las operaciones básicas
para manejar matrices ralas. En el
Rep Use un diccionario
stl::map<>
para almacenar los valores de la matriz rala.
Emplantille su
matriz.
Recuerde que la diferencia entre "definir" y "declarar" un objeto
en C++ es que las declaraciones se ponen en los archivos de
encabezados <*.h> y <*.hpp>,
mientras que las definiciones están en los archivos de
implementación <*.c> y
<*.cpp>.
|
1.b) [5 pts] Especifique en formato
"Doxygen" el
método Matriz_Rala::Traspuesta() que traspone
la matriz.
1.c) [10 pts] Implemente el método
Matriz_Rala::Traspuesta(). No se le meta al
Rep de la clase Matriz_Rala.
1.d) [10 pts] Implemente el método
Matriz_Rala::Traspuesta(). Debe usar los campos del
Rep directamente, pero evite copiar el valor
"m_val" almacenado en cada una de las entradas de la
matriz. Exlique por qué esta implementación es
eficiente.
1.e) [0 pts] Implemente el operador de acceso a los valores de la matriz.
1.f) [0 pts]
Dibuje el
modelo para la clase "Matriz_Rala".
2) [33 pts] La función
Brincolina(L,n) para la clase
Lista es una función amiga que sirve para
invertir el orden de varias sublistas de tamaño
n en una lista:
(a b c d e f) ==> (b a d c f e) (2) (a b c d e f) ==> (c b a f e d) (3) (a b c d e f) ==> (d c b a f e) (4) (a b c d e f) ==> (a b c d e f) (1)
2.a) [5 pts] Dibuje el modelo de la lista que usará en su implementación.
2.b) [5 pts]
Especifique Brincolina(L,n) (no se limite a copiar el
enunciado de esta pregunta).
2.c) [23 pts]
Implemente Brincolina(L,n). No copie los valores de
la lista; únicamente cambie los punteros de los nodos la
lista. Puede usar una lista simple o doblemente enlazada.
3) [33 pts]
Escriba el programa MSTLTR.c++ que lea un archivo y
graba todas las líneas que tienen una cantidad
máxima de letras diferentes. El formato de salida del
programa es el siguiente:
C:\> mstltr archivo.*
lines(7) file: line
5345 archivo.uno: abcde
125 archivo.dos: aabbccddee
227 archivo.dos: 1234.1234.1234.1234.1234.1234.1234.1234.
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 "
Soluciones
Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2006 Derechos de autor reservados © 2006
|