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

Examen #1 [solución]

      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.

 

Soluciones

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