Universidad de Costa Rica
|
|
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] Para manipular un vector de números conviene usar el método recursivo
maxmin()
, similar al de la tarea programada, que reacomoda los valores del vector de manera que el valor más pequeño queda de primero y el más grande queda de último.
1.a) [0 pts]
Muestre el resultado de aplicar maxmin(V,0,4)
al vector { 5,4,3,2,1,0 }
. Explique por qué en la última posición del vector V[5]
se mantiene el valor en cero y también indique por qué todos los demás valores cambian de posición.
1.b) [22 pts]
Escriba una implementación Java recursiva de maxmin()
. Incluya documentación interna para explicar cómo funciona su algoritmo cuando el vector es pequeñito.
1.c) [11 pts] Modifique su implementación anterior para obtener otra que, en lugar de solo colocar al menor y mayor en su posición adecuada, también reacomode los demás valores de forma que el vector quede totalmente ordenado.
2) [33 pts] Suponga que una palabra es una secuencia contigua de caracteres no blancos, en donde un blanco es aquel caracter para el que el método estático
Character.isWhitespace(char)
retorna verdadero.
2.a) [13 pts]
Especifique partePalabras()
, que toma una hilera "str
" de palabras separadas por espacios, y retorna un vector o lista de hileras en la que aparecen en secuencia esas palabras (tomadas de la hilera de entrada "str
" pero sin blancos). Cada entrada del vector contiene solo 1 palabra. Para mejorar su especificación, incluya ejemplos de uso programados con assertTrue()
.
2.b) [20 pts]
Implemente partePalabras()
.
3) [33 pts] Un "
letroso
" es una clase que contiene una secuencia de caracteres a la que
se le pueden aplicar estas operaciones:
asigne(String str)
str
" para darle valor al letroso.
cuenta()
q=soyLetroso(p,n,ch)
q
" el índice o posición en donde se pueden encontrar "n
" letras consecutivas e iguales a "ch
", pero con la restricción de que p<=q
. Retorna cuenta()
si ya no encuentra las "n
" letras seguidas.
grabe()
3.a) [0 pts]
Implemente la operación asigne()
para la clase letroso
y suponga que el valor es almacenado en la lista Java de letras m_Ltr (no use una hilera).
3.b) [11 pts]
Especifique soyLetroso()
. Para mejorar su especificación, incluya ejemplos de uso programados con assertTrue().
3.c) [11 pts]
Implemente soyLetroso()
.
soyLetroso()
encuentra las letras "ch
" consecutivas en posiciones cada
vez más altas del índice. Use la clase
letroso
para implementar el método
letroso.esLetrosario(n,ch,STR)
:
assertTrue( esLetrosario( 5, 'A', "..A..AA...AAA...AAAA...AAAAA..." ) ); assertTrue( esLetrosario( 3, 'A', "A..AA...AAA..." ) ); assertFalse( esLetrosario( 2, 'A', "..AA..A.." ) ); // están al revés
Adolfo Di Mare <adolfo@di-mare.com>.
|