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) [5 pts]
Su clase "Primo
" debe recordar en un vector 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. Dibuje el
modelo para la clase
"Primo
". Incluya el
Rep si ya
calculó los números primos menores a
20
.
1.b) [5 pts] Especifique el operador de asignación que permite cambiar el números almacenado en el Rep de la clase.
1.c) [18 pts] Implemente el operador de asignación que permite cambiar el número almacenado en el Rep de la clase. Recuerde actualizar, si es necesario, el vector de primos anteriores ya calculado.
1.d) [0 pts]
Especifique e implemente el
método
"val()
" que permite obtener el número
almacenado en el Rep.
1.e) [5 pts]
Especifique e implemente la función booleana
"Hilbert(N,p,q)
" que recibe como argumento el
número "N
" y luego calcula y retorna los 2
números primos "(p,q)
" que sumados son el
número
"N == p+q
" (si "N
" no es par,
su función debe retornar "false
"). En su
implementación debe usar la clase "Primo
" pero
como la
operación
"Hilbert()
" no es un
método
recuerde no metérsele al Rep de la clase
"Primo
".
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.
2.a) [5 pts]
Especifique la función "SoloLetras()
" que
toma una hilera C++ y le elimina todos los caracteres que no son
alfabéticos. Recuerde usar la función booleana
"isalpha()
" que retorna "true
" si su
argumento es una letra.
2.b) [12 pts]
Implemente
"SoloLetras()
".
2.c) [16 pts]
Especifique e implemente 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 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
", pero
retornaría "false
" para
"BMMOOO
".
Adolfo Di Mare <adolfo@di-mare.com>.
|