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

Examen #1 [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 todas las preguntas. ¡No haga más de lo que se le pide!

 

1) [33 pts] El programa "Nmbag.cpp" sirve para leer números y contar cuántas veces aparece cada uno. Implemente la parte de la clase "Nmbag" que se necesita para que este programa funcione.

int main() {
    Nmbag B; // la mega-bolsota
    long  n;

    // lee todos los valores
    while (cin >> n) {
        B.Inc(n);
    }

    for (n=0; n<LONG_MAX; ++n) {
        if (0 != B[n]) {
            cout << n << " está " << B[n];
            cout << " veces en la bolsa" << endl;
        }
    }

    return 0;
} // main()

1.a) [7 pts] Defina el Rep para la clase. Suponga que nunca ocurrirá que necesite almancenar más de 4096 valores diferentes en su "Nmbag".

1.b) [1 pts] Implemente el constructor y el destructor para la clase.

1.c) [11 pts] Especifique e implemente la operación examinadora "B[n]". Use el formato Doxygen e incluya los datos de prueba BUnit.

1.d) [14 pts] Especifique e implemente la operación mutadora "B.Inc(n)". Use el formato Doxygen e incluya los datos de prueba BUnit.

1.e) [0 pts] Mejore la eficiencia de la operación "B[n]" usando búsqueda binaria. Explique por qué esto no mejora la implementación de "B.Inc(n)".

 

2) [33 pts] La forma natural de ver el valor de un número racional es como una fracción de la forma [a/b]. Suponga que ya usted cuenta con la función pchr2rat() que sirve para extraer un valor racional de una hilera.

2.a) [11 pts] Especifique la función pchr2rat() que obtiene un valor racional de la hilera que recibe como argumento y luegor returna un puntero (const char*) a la hilera que recibe como argumento, indicando adónde está el resto de la hilera que hay que procesar. Por ejemplo, si la hilera str contiene el valor "...[25/5]---", la invocación pchr2rat(&str[3], rat) le cambiará a la variable racional "rat" su valor para que contenga [5/1] y el puntero retornado por pchr2rat() apuntará al primer guión "-" de la hilera str que aparece después de [25/5]. Use el formato Doxygen e incluya los datos de prueba BUnit.

2.b) [11 pts] Especifiquie la función make_MatrixRational() que permite obtener el valor de una matriz de números racionales a partir de una hilera. Debe funcionar de manera similar a la de la segunda tarea programada. Use el formato Doxygen e incluya los datos de prueba BUnit.

2.c) [11 pts] Implemente make_MatrixRational().

 

3) [33 pts] El "candado" es un juego que consiste en rotar las columans de una matriz 1, 2, 3, etc veces, de izquierda a derecha.
1 a V      2 c Y
2 b W ==\  3 d Z
3 c X    > 4 e V
4 d Y ==/  5 a W
5 e Z      1 b X

3.a) [11 pts] Especifique a función rotaCol() que sirve para rotar los valores de una columna en una matriz. Use el formato Doxygen e incluya los datos de prueba BUnit.

3.b) [11 pts] Especifique la función candado() para matrices. Use el formato Doxygen e incluya los datos de prueba BUnit.

3.c) [11 pts] Implemente candado().

 

Soluciones

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