Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1201
I 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] En algunas aplicaciones conviene contar con la clase "Mulador" que sirve para multiplicar en parejas un montón de valores numéricos. Por ejemplo, el mulador aplicado a los valores (1,5,2,2,3,3,4,5) resultaria en esta suma: 1*5 + 5*2 + 2*2 + 2*3 + 3*3 + 3*4 + 4*5 cuyo total es 66.

3.a) [6 pts] Las operaciones más importantes de esta clase son Acumule(), Total() y Cantidad(). Especifique en formato "Doxygen" cada una de estas operaciones.

3.b) [8 pts] Defina y declare el Rep para su clase Mulador. Debe evitar almacenar en un vector o en cualquier tipo de contenedor los valores que han sido acumulados en el mulador. Dibuje el diagrama o modelo de la clase.

3.c) [6 pts] Implemente las operaciones Cantidad() y Total() para la clase Mulador.

3.d) [6 pts] Implemente Mulador::Acumule().

3.e) [8 pts] Modifique el Rep de manera que sea posible implementar Mulador::Elimine(). Incluya la declaración del nuevo Rep y dibuje el diagrama o modelo de la clase.

3.f) [6 pts] Especifique Mulador::Elimine().

3.g) [10 pts] Implemente Mulador::Elimine() con el nuevo Rep.

 

4) [50 pts] Suponga que usted ya cuenta con la clase "VectorCircular" definido en el examen anterior y en la tercera tarea programada; úselo para construir las el Rep de las clases "Stack" y "Queue".

4.a) [15 pts] En una pila las operaciones más importantes son "push_front()" y "pop_front()". Implemente estos dos métodos del contenedor "Stack" usando el "VectorCircular" en el Rep. ¡No se le meta al Rep del "VectorCircular"!

4.b) [15 pts] En una cola las operaciones más importantes son "push_back()" y "pop_front()". Implemente estos dos métodos del contenedor "Queue" usando el "VectorCircular" en el Rep. ¡No se le meta al Rep del "VectorCircular"!

4.c) [10 pts] Explique cuáles cambios en la implementación de sus clases "Stack" y "Queue" es necesario hacer si se modifica el Rep sustituyendo el "VectorCircular" por la clase usada en la primera tarea programada.

4.d) [10 pts] Suponga que el Rep del "VectorCircular" está construido como el Rep del contenedor "queue" de la primera tarea programada. Especifique e implemente la operación para trasladar sub-arreglos. En su implementación debe evitar copiar o mover valores. Incluya ejemplos de uso en su especificación.

4.e) [0 pts] Explique por qué el destructor de las clases "Stack" y "Queue" no necesita retornar la memoria del contenedor usado en el Rep.

 

Soluciones

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