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