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 #1 [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!

 

1) [50 pts] Una cola de prioridad se puede implementar usando un vector si al agregar los valores con "push()" se mantiene el orden ascendente del vector. Para ver cuál es el valor máximo, basta invocar "top()" que retornará el último elemento del vector. Es más fácil de implementar "pop()" porque este método simplemente remueve el valor del final del vector. En sus respuestas debe usar el Rep del vector extendible de la tercera tarea.

1.a) [0 pts] Dibuje el modelo para la nueva clase "ColaPrioridad".

1.b) [9 pts] Especifique e implemente la operación "ColaPrioridad::top()" para que el vector extendible de la tarea programada pueda funcionar como una cola de prioridad.

1.c) [9 pts] Especifique e implemente la operación "pop()".

1.d) [23 pts] Especifique e implemente la operación "push()".

1.e) [9 pts] Escriba un programa completo que reciba varios números y los imprima ordenados, en orden descendente. Use su cola de prioridad.

 

2) [50 pts] El vector circular tiene la propiedad de que permite trasladar desde un lugar a otro un subarreglo (en forma circular). Por ejemplo, si el vector tuviera almacenado el valor "NoPuedoMas", al trasladar "Puedo" desde el medio hacia el final el valor almacenado sería "MasNoPuedo".

2.a) [8 pts] Dibuje el modelo para su clase "VectorCircular".

2.b) [8 pts] Escriba las declaraciones C++ para la clase VectorCircular. Incluya el Rep, la operación para trasladar subarreglos y el operador de subíndices.

      Recuerde que la diferencia entre "definir" y "declarar" un objeto en C++ es que las declaraciones se ponen en los archivos de encabezados <*.h> y <*.hpp>, mientras que las definiciones están en los archivos de implementación <*.c> y <*.cpp>.
  • Las declaraciones corresponden a la especificación.
  • Las definiciones corresponden a la implementación. Para facilitarle memorizar este hecho, asocie la palabra "definición" con la directiva #define que sirve para implementar macros en C++:
          #define max(a,b) ( (a)>(b) ? (a) : (b) )

2.c) [16 pts] Especifique e implemente el operador de subíndices. Incluya ejemplos de uso.

2.d) [18 pts] Especifique e implemente la operación para trasladar subarreglos. En su implementación debe evitar copiar o mover valores. Incluya ejemplos de uso en su especificación.

 

Soluciones

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