Universidad de Costa Rica
|
|
Duración: Dos 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. Resuelva tres de las preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] Con el fin de trasmitir datos por una línea telefónica vigilada por la policía, en la Compañía Rateros INC han decidido encriptar los datos de manera que cualquiera que escuche la transmisión no puede descifrar el mensaje. Los mensajes son números enteros de varios dígitos.
Saca( 6543210 , 3,2) → 32 volvedor( 1234567 , 1 ) → 1234567 Saca( 6543210 , 5,4) → 5432 volvedor( 1234567 , 2 ) → 10325476 Saca( 6543210 , 3,4) → 3210 volvedor( 1234567 , 3 ) → 100432765 Saca( 1234567 , 2,3) → 567 Saca( 1234567 , 2,4) → Error - Inválido1.a) [11 pts] Especifique en formato Javadoc e implemente
volvedor( n, k )
que vuelve los
dígitos del número "n
" en grupos de
"k
" dígitos, de derecha a izquierda. En su
implementación, no use hileras ni vectores: trabaje
directamente con los números.
1.b) [11 pts]
Especifique en formato Javadoc e
implemente
saca( n, i, k )
que al
número "n
" le saca "k
"
dígitos comenzando en la posición "i
"
(que corresponde al dígito 10^i
). En su
implementación, no use hileras ni vectores: trabaje
directamente con los números.
1.c) [11 pts]
Con base en esos
métodos
especifique e implemente
encripta( k, vec[] )
que encripta
todos los números enteros almacenados en el vector
"vec[]
" volviéndolos en grupos de
"k
" dígitos. No use un vector adicional en su
implementación.
2) [33 pts] Implemente la clase "
List.Palindromo
" que sirve para
iterar sobre los valores de una lista. En cada iteración,
el valor retornado por "next()
" es el siguiente valor
de adelante y atrás de la lista, pero en el momento en que
los 2 no coincidan termina la iteración y
"hasNext()
" retorna "false
".
( 1 2 3 4 5 7 6 5 4 3 2 1 ) → Retorna 1 2 3 4 5 ( 1 2 3 4 5 6 6 5 4 3 2 1 ) → Retorna 1 2 3 4 5 6 ( 0 2 3 4 5 6 6 5 4 3 2 1 ) → No retorna valor alguno pues 0!=1
3) [33 pts] Mientras que en una "sub-hilera" todas las letras deben aparecer juntas y en su orden, en una "sub-secuencia" aparecen algunas letras aunque no necesariamente aparecen todas. Por ejemplo la hilera
"..1...2..3...4....5"
tiene como sub-hilera a
"2..3"
y "12345
" es una sub-secuencia
que no es sub-hilera. La hilera nula ""
siempre es
sub-hilera y sub-secuencia de cualquier hilera.
3.a) [5 pts]
Explique cómo se puede implementar el método
estático
esSubHilera()
que determina si una hilera es o no sub-
hilera de la otra.
3.b) [8 pts]
Suponga que usted ha almacenado en vectores de letras los valores
que componen 2 hileras.
Especifique en formato
Javadoc el
método
estático esSecuencia()
que determina si una
hilera es o no sub-secuencia de la otra.
3.c) [20 pts]
Implemente esSecuencia()
.
4) [33 pts]
[2] |
[3] |
[4] |
1 2 3 |
1 2 4 3 5 6 |
1 2 5 3 6 8 4 7 9 10 |
4.a) [7 pts]
El método
estático "Escalereado()
" de la clase
"Biblio
" recibe un número e imprime una
escalera descendente de valores hasta el valor que corresponde al
número, de manera que la base tenga relación con el
valor de entrada. Escriba la
especificación completa de
"Escalereado()
".
4.b) [26 pts]
Implemente "Escalereado()
".
Adolfo Di Mare <adolfo@di-mare.com>.
|