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

Examen #2 [solución]

      Duración: Ciento veinte 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 las tres preguntas. ¡No haga más de lo que se le pide!

 

1) [33 pts] Considere la rutina bUNga():

template <class T>
void starList( std::string& str, const std::list<T>& L );

void bUNga(long BUNGA,std::list<long>&bunga
){long BunGa=1;bool noEs = false;while (
(!noEs)&&(BunGa<BUNGA/2)){++
BunGa;noEs=(BUNGA%BunGa==0);}if(
noEs){bunga.push_back(BunGa);bUNga
(BUNGA/BunGa,bunga);}}

1.a) [0 pts] Justifique cada una de las reglas de indentación usadas en el curso. Discuta si esas reglas son convenciones de programación apropiadas para C++.

1.b) [0 pts] Especifique e implemente la rutina emplantillada starList() que toma la lista L=(1,2,17) y la almacena en "str" separando los valores de la lista con una estrella '*'.

1.c) [9 pts] Reescriba la rutina bUNga() de acuerdo a las convenciones de programación que ha practicado en sus programas.

1.d) [9 pts] Escriba la especificación completa para esta rutina. Incluya los datos de prueba BUnit.

1.e) [15 pts] Muestre el resultado de ejecutar la rutina con el valor 20 y una lista vacía. Muestre cómo se ve la pila de ejecución junto con los registros de activación, paso por paso, en la recursividad.

1.f) [0 pts] Modifique su rutina para que funcione correctamente.

 

2) [33 pts] Jimmy Neutron ha estado muy ocupado descubriendo los secretos de la CIA, para lo que ha interceptado mucho archivos que contienen renglones. Para pre-procesarlos, necesita encontrar los 2 tipos de renglones más largos de cada archivo, y almacenarlos en un archivo de texto. Recuerde que si hay varios renglones de longitud máxima, el programa debe extraerlos todos. Por ejemplo, si ha 3 renglones de 155 letras y 4 de 154 letras, en donde la longitud máxima del renglón es 155, el programa deberá extraer un total de 7 renglones. Implemente el programa completo.

 

3) [33 pts] La matriz chisquirrisquitirrisquititica no incluye una clase vector que le permita al programador cliente de la clase manipular una columna completa. Diseñe 2 clases amigas, "Matriz" y "Columna", de manera que el programador cliente pueda obtener y manipular una columna completa de la matriz.

                    M
           |----------------->
 m_ptr[]->[*][*][*][*][*][*][*]
           |  |  |  |  |  |  |
           v  v  v  v  v  v  v
        / [*][*][*][*][*][*][*]
       |  [*][*][*][*][*][*][*]  Matriz[NxM]:
       |  [*][*][*][*][*][*][*]  - N filas
      N|  [*][*][*][*][*][*][*]  - M Columnas
       |  [*][*][*][*][*][*][*]
        \ [*][*][*][*][*][*][*]

3.a) [6 pts] Declare el Rep de las clases "Matriz" y "Columna" de manera que cada "Columna" contenga un vector y "Matriz" contenga un vector de punteros a cada una de las columnas. Suponga que la matriz es densa. Respecte los siguientes requerimientos en el Rep:

3.b) [7 pts] Especifique e implemente una operación que le permita al programador cliente obtener una columna completa de la matriz. No copie la columna.

3.c) [7 pts] Especifique e implemente una operación que le permita al programador usuario accesar uno de los valores de la matriz.

3.d) [6 pts] Especifique e implemente una operación que le permita al programador usuario intercambiar 2 filas de la matriz.

3.e) [7 pts] Especifique e implemente una operación que le permita al programador usuario intercambiar 2 columnas de la matriz. Su implementación debe ser rápida y eficiente.

 

Soluciones

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