Universidad de Costa Rica
Escuela de Ciencias de la
Computación e Informática
Profesor Adolfo Di Mare
CI-1201
II Semestre 2006
[<=] [home] [<>] [\/] [=>]
CI-1201 Programación II

Examen #1 [solución]

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

2.d) [0 pts] Explique cómo usar estas 2 funciones para encontrar los mensajes secretos ocultos en la Biblia.

 

Soluciones

[mailto:] Adolfo Di Mare <adolfo@di-mare.com>.
Copyright © 2006
Derechos de autor reservados © 2006
[home] <> [/\]