Universidad de Costa Rica
|
|
Duración: Ochenta minutos. 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 3
vectores paralelos para representar cada uno de los elemento
(i,j,val)
almacenados en la matriz rala.
Emplantille su
matriz.
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
"val
" almacenado en cada una de los elementos
(i,j,val)
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] En algunas aplicaciones conviene contar con la clase
Acumulador
que sirve para sumar un montón de
valores numéricos, pero eliminando del total tanto al
más grande como al más pequeño de todos los
valores. Por ejemplo, el acumulador aplicado a los valores
(1,5,2,2,3,3,4,5)
sólo sumaría 5+2+2+3+3+4
y eliminaría el 1
y alguno de los 5
's, que son los valores menor y mayor de toda la secuencia.
2.a) [11 pts]
Las operaciones más importantes de esta clase son
Acumule()
, Total()
y
Cantidad()
. Especifique en formato
"Doxygen" toda la
clase y, en especial, estas operaciones.
2.b) [5 pts]
Dibuje el
modelo para la clase "Acumulador
".
2.c) [6 pts]
Implemente
Acumule()
.
2.d) [11 pts] Implemente los datos de prueba para esta clase. Hagas suficientes datos de prueba; si su respuesta es concisa, también lo será su nota.
Adolfo Di Mare <adolfo@di-mare.com>.
|