Universidad de Costa Rica
|
|
Duración: Ciento veinte 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] Considere la operación para racionales
Exp(x,y)
, que calcula el valor de
"x
" elevado a la potencia "y
", en donde
"y
" es un número entero.
1.a) [7 pts]
Declare la operación Exp(x,y)
.
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) [16 pts]
Implemente Exp(x,y)
. Debe accesar el
Rep de la clase
para asegurar que su implementación es eficiente.
1.c) [4 pts]
¿Porqué debe o no invocar a
rational::simplify()
en la implementación
de Exp(x,y)
?
1.d) [7 pts]
¿Qué desventajas tiene que la función
Exp()
sea un miembro de la clase
rational
?
2) [33 pts] El "candado" es un juego que consiste en rotar las columans de una matriz 1, 2, 3, etc veces, de izquierda a derecha.
1 a V 2 c Y 2 b W ==\ 3 d Z 3 c X > 4 e V 4 d Y ==/ 5 a W 5 e Z 1 b X
2.a) [11 pts]
Especifique a función rotaCol()
que sirve
para rotar los valores de una columna en una matriz. Use el
formato
Doxygen e incluya los datos
de prueba
BUnit.
2.b) [11 pts]
Especifique la función candado()
para
matrices. Use el formato
Doxygen e incluya los datos
de prueba
BUnit.
2.c) [11 pts]
Implemente
candado()
.
3) [33 pts] Una
Escalera
es un contendor que en cada posición
contiene un valor adicional a la cantidad de valores almacenados
en la posición anterior. Por ejemplo, si la escalera contiene
letras, al construir la escalera a partir de la hilera
"ijos4"
, el valor almacenado sería este:
[0] i [1] jj [2] ooo [3] ssss [4] 44444
3.a) [7 pts]
Diseñe el
contenedor
Escalera
. Escriba la
declaración
del
Rep. Use
plantillas.
3.b) [7 pts] Implemente el constructor que recibe un vector de objetos. Recuerde que todos los valores de un peldaño son iguales.
3.c) [3 pts]
Implemente el
constructor de
copia para la Escalera
.
3.d) [3 pts]
Especifique e
implemente la operación push_front()
para la
Escalera
. Use el
formato
Doxygen e incluya los datos
de prueba
BUnit.
3.e) [3 pts]
Especifique e implemente la operación
pop_back()
para la Escalera
. Use el
formato
Doxygen e incluya los datos
de prueba
BUnit.
3.f) [10 pts]
La operación valid(i,j)
retorna un puntero al valor
almacenado en el peldaño "i
" de la escalera, siempre
y cuando "j
" no se salga de la cantidad de valores
almacenados en la escalera. De otra manera, valid()
retorna el puntero nulo (0
). Especifique e implemente
valid()
. Use el
formato
Doxygen e incluya los datos
de prueba
BUnit.
Adolfo Di Mare <adolfo@di-mare.com>.
|