Universidad de Costa Rica
|
|
|
|
|
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().
Adolfo Di Mare <adolfo@di-mare.com>.
|
|
|