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

Examen Final [solución]

      Duración: tres horas. 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. Debe resolver todas las preguntas. La nota será calculada tomando las mejores tres respuestas. ¡No haga más de lo que se le pide!

 

1) [25 pts] La clase Rebotador ha sido creado para que, dentro de una matriz rectangular [N*M], uno de sus elementos recorra en diagonal las entradas, pero rebotando cuando se alcanza alguna de las paredes, como se muestra a continuación:

+-------------+     class Matriz {
|   /\      /\|         enum { DIM = 25 };
|  /3 \    / /|         char m_MAT[DIM][DIM];
| /2   \  / / |         int m_N,m_M; // dimensiones actuales
|/1     \/ /n |         friend class Rebotador;
+-------------+     }; // Matriz

class Rebotador {
    int m_dir;   // '\      /'      ./      \.
    enum          { NO= -1, NE= +1, SO= +2, SE= -2 };
    int m_x, m_y;
public:
    void Paso(Matriz& M, int& x, int& y, char& ch);
}; // Rebotador

1.a) [5 pts] Explique para qué sirve cada uno de los campos del Rep de Rebotador (en el ejemplo se ha comenzado desde la esquina inferior izquierda).

1.b) [5 pts] Haga la especificación de Rebotador::Paso(). Tome en cuenta que, antes de terminar, Rebotador::Paso() siempre ejecuta esta instrucción:
      M.m_MAT[x][y] = ch;
Suponga que, en cada invocación, Rebotador::Paso() avanza un paso nada más.

1.c) [15 pts] Implemente Rebotador::Paso().

 

2) [25 pts] La función strstr() de la biblioteca estándar C++ sirve para encontrar una subhilera dentro de otra hilera.

2.a) [0 pts] Especifique la función strstr().

2.b) [10 pts] Implemente strstr() usando vectores de caracteres.

2.c) [15 pts] Implemente strstr() usando aritmética de punteros.

 

3) [25 pts] La función SelectionSort() sirve para ordenar un vector de "n" objetos.

3.a) [10 pts] Especifique la función SelectionSort() para ordenar un vector de hileras de tipo "char *".

3.b) [15 pts] Implemente SelectionSort().

 

4) [25 pts] En este ejercicio, una palabra es una secuencia contigua de caracteres no blancos, en donde un blanco es aquel caracter para el que la función isspace() retorna verdadero.

4.a) [10 pts] Especifique la función PartePalabras(), que toma una hilera "str" llena de palabras, y retorna un vector de hasta "n" hileras, en la que aparecen en secuencia las palabras de la hilera de entrada "str" (sin blancos).

4.b) [15 pts] Implemente PartePalabras().

Soluciones

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