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 "
SolucionesAdolfo Di Mare <adolfo@di-mare.com>. Copyright © 2006 Derechos de autor reservados © 2006
|