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

Examen #2 [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!

 

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".

 

Soluciones

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