Universidad de Costa Rica
|
|
Duración: ochenta 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 todas las preguntas. ¡No haga más de lo que se le pide!
1) [33 pts] La clase "
Primo
" es una clase que sirve para obtener
números primos, esto es, números enteros que son
divisibles únicamente por ellos mismos y por uno. El
método
más importante de la clase se llama
"EsPrimo()
" que determina si el valor almacenado es o
no un número primo.
1.a) [0 pts]
Explique qué significa que el campo de una clase es
estático, declarado con la palabra reservada
"static
".
1.b) [5 pts]
Su clase "Primo
" debe recordar en un vector
estático interno todos los números primos menores al
valor actualmente almacenado, de manera que al cambiarle el valor
a la clase no sea necesario calcular de nuevos todos los
números primos anteriores. Permita que en ese vector sea
posible almacenar varios cientos de valores. Declare el
Rep de esta
clase "Primo
" y dibuje el
modelo; incluya el
Rep si ya calculó los números primos
menores a 20
.
1.c) [5 pts]
Especifique e
implemente
"EsPrimo()
".
1.d) [18 pts]
Implemente la
función booleana "check_ok(nP)
" que verifica
la
invariante de la
clase "Primo
".
1.e) [5 pts]
Especifique e implemente el
método
"val()
" que permite obtener el número
almacenado en el Rep.
1.f) [0 pts]
Reprograme "val()
" como un operador de
conversión de la clase.
2) [33 pts] Es una verdad bien conocida que los autores del Código Da Vinci descubrieron frases secretas codificadas en la Biblia. Usted creará una biblioteca que permita encontrar esas frases.
void Bunga(char*s){ int i=0;int j=i;while(s[i]!=0){ if(isalpha (s[i])){s[j]=s[i];j++;}i++;}s[j]=0;} |
2.a) [8 pts]
Corrija el espaciado y la indentación de la función
"Bunga()
". Luego escriba la documentación
interna y su
especificación.
2.b) [7 pts]
Implemente
de nuevo "Bunga()
" eliminando las variables
"i
" y "j
" y usando únicamente
aritmética de punteros.
2.c) [6 pts]
Especifique la función "Bomba(s,b)
" que busca
la hilera "b
" dentro de la hilera "s
"
aún si las letras de "b
" no aparecen
consecutivas o están desordenadas dentro de
"s
". Por ejemplo, si "s
" es la hilera
"aaaaBiiiiOiiOOuuuuMM
" su función
"Bomba(s,b)
" retornaría "true
"
para la hilera "b == BOOOMM
".
Además, también retornaría
"true
" para "BMMOOO
" porque
"Bomba(s,b)
" internamente ordena las letras para
encontrar las similitudes ocultas por el desorden. Haga su mejor
esfuerzo para que su especificación sea correcta, completa
y clara.
2.d) [12 pts]
Implemente "Bomba(s,b)
".
Adolfo Di Mare <adolfo@di-mare.com>.
|