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>.
|