Instituto Tecnológico de Costa Rica Sede Regional San Carlos

Anuncio
Instituto Tecnológico de Costa Rica
Sede Regional San Carlos
Departamento de Ingeniería en Computación
Introducción a la Programación
Profesor: Ing. Abel Méndez Porras.
Tercer Examen Parcial
Introducción
El objetivo de este tercer examen es aumentar el domino del uso de estructuras de listas en el lenguaje de
programación Scheme. El problema a resolver consiste en realizar un programa con una serie de funciones
que permitan al usuario final llenar crucigramas. Un crucigrama es un pasatiempo escrito que consiste en
escribir en una plantilla una serie de palabras en orden vertical y horizontal que se cruzan entre sí.
Definición
El programa debe mostrar al usuario una serie de proposiciones que le permitan al usuario determinar las
palabras que debe colocar en orden vertical y en orden horizontal (Ver ejemplo 1). Al iniciar, el programa le
solicita al usuario seleccionar 1 de los 3 crucigramas que el programa tiene. Una vez seleccionado el
crucigrama, el program debe mostrar la matriz inicial con los espacios donde indique la posición para cada
palabra deducida de la proposición. Cada crucigrama debe ser de diferente tamaño.
Operaciones que puede hacer el usuario y respuesta del programa:
1. Colocar una palabra en una determinada posición.
Ejemplo: (1 (m o u s e)). Cuándo el usuario introduce esta expresión el programa debe determinar la
columna y fila donde debe iniciar la colocación de la palabra. Además, dependiendo del número debe
determinar si es vertical o horizontal.
Restricciones: El programa puede colocar la palabra únicamente si todos los espacios hasta
completar la longitud de ésta estén vacíos. O si letras en esas posiciones se pueden emparejar con
las letras de la palabra que se desea colocar.
Si se alcanzó el éxito colocando la palabra se debe mostrar la matriz actualizada al usuario y
solicitarle la nueva palabra. En caso contrario, mostrar la matriz sin cambio, notificarle al usuario el
error y solicitarle que introduzca una nueva palabra.
2.
Eliminar una palabra colocada.
Ejemplo: (1 ()). Cuándo el usuario introduce esta expresión el programa debe borrar todas las letras
correspondientes a esa palabra. Importante, si algunas letras coinciden con otra palabra estas no
pueden ser borradas.
Mostrar al usuario la matriz actualizada y solicitar que ingrese la nueva palabra.
3.
Ayuda.
El usuario puede pedir ayuda escribiendo (1(?)). Indica que desea saber con que letra inicia esta
palabra entonces el programa le muestra la matriz sin ninguna modificación y le muestra la letra
inicial de la palabra. Además, le solicita al usuario que introduzca la nueva palabra.
4.
Cada vez que el usuario introduce una palabra y es colocada satisfactoriamente, el programa debe
verificar si la matriz esta llena. No puede saber si esta correcta porque no guardamos en ningún lugar
la matriz llena de forma correcta.
5.
Todos los pasos anteriores, excepto el 3, se deben hacer sobre la matriz, no es válido hacer
comparaciones con palabras previamente guardas.
Aspectos administrativos
1. Es un examen individual.
2. Debe entregar en un cd libre de virus:
1. Documentación de la solución planteada.
2. El código fuente, incluyendo los crucigramas.
3. Fecha de entrega: miércoles 20 de mayo, antes de las 8:00 a.m.
Ejemplo 1.
Horizontal
1. Se utiliza para mover el cursor.
2. Se utiliza para digitar los caracteres.
3. Donde se guarda la información volátil de la computadora.
4. Disco de pequeña capacitad y portable.
Vertical
5. Donde se muestra la información que tiene la almacenada la computadora.
6. Carga de energía para utilizar la computadora sin alimentación eléctrica.
7. Computadoras conectadas.
8. Donde se guarda la información no volátil de las computadoras.
9. Dispositivo que se utiliza para convertir la información digital en información impresa.
(
(1,5 ­ 6 ­ ­ ­ * * *)
( ­ * ­ * * * * * * )
( ­ * ­ * * 7 * * 9 )
( ­ * * * * ­ * * ­ )
( 2 ­ ­ ­ ­ 8 ­ * ­ )
( ­ * * * * ­ * * ­ )
( ­ * * * * ­ * * ­ )
( * * * * * 4 ­ * ­ )
( * * * * * ­ * * ­ )
( * * 3 ­ ­ ­ ­ ­ ­ )
)
(
(m o u s e * * * * )
(o * p * * * * * * )
(n * s * * r * * i )
(i * * * * e * * m )
(t e c l a d o * p )
(o * * * * i * * r )
(r * * * * s * * s )
(* * * * * c d * o )
(* * * * * o * * r )
(* * m e m o r i a )
)
Descargar