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!
3) [50 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) [10 pts]
Diseñe el
contenedor
Escalera
. Escriba la
declaración
del
Rep. Use
plantillas.
3.b) [10 pts] Implemente el constructor que recibe un vector de objetos. Recuerde que todos los valores de un peldaño son iguales.
3.c) [5 pts]
Implemente el
constructor de
copia para la Escalera
.
3.d) [5 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) [5 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) [15 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.
4) [50 pts] Diseñe un vector que permita darle vuelta rápidamente a los valores contenidos, usando un esfuerzo que no dependa de la cantidad de valores almacenados. Esto quiere decir que su clase
Vector_Vuelta
no necesita tocar ni
copiar ninguno de los elementos almacenados, sean estos
sólo 2 o 2 mil millones.
4.a) [15 pts]
Diseñe el
contenedor
Vector_Vuelta
. Escriba la
declaración de
la clase y documente para qué sirve cada campo del
Rep. Use
plantillas.
4.b) [5 pts]
Especifique e
implemente la operación flip()
que le da
vuelta a todos los elementos del Vector_Vuelta
.
4.c) [10 pts]
Especifique e
implemente la
operación flop(i)
que hace que el primer valor
del su Vector_Vuelta
no sea el que estaba en la
posición [0]
sino que sea el de
posición [i]
. Por ejemplo, si el valor
almacenado era [0,1,2,3,4,5]
, después de
flop(2)
el valor almacenado será
[2,3,4,5,0,1]
, porque el primer valor del vector
será el que estaba en la posición
[2]
.
4.d) [10 pts]
Especifique e implemente el método at(i)
que
retorna una copia del valor almacenado en la i-ésima
posición del Vector_Vuelta
.
4.e) [10 pts]
Explique qué inconvenientes se presentan al implementar las
operaciones push_front()
o pop_back()
para la clase "Vector_Vuelta
".
Adolfo Di Mare <adolfo@di-mare.com>.
|