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] 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.
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|