Universidad de Costa Rica. Escuela de Ciencias de la Computación e Informática. CI-0113 Programación II.
2020a. Examen 01 [30-May-2020]. Prof: Gr04 Jeisson Hidalgo-Céspedes.
Marca de agua espiral
En los últimos años, la Agencia de Periodismo Espiral (APE) se ha destacado por la valiente entrega de sus corresponsales, quienes se atreven a cubrir hechos que otros no. No es sorpresa que los textos y fotografías de sus corresponsales aparezcan en otros medios, con y sin permiso. Con el fin de desincentivar la reproducción sin permiso de las apetecidas imágenes, la agencia comenzó a sellarlas con una marca de agua con su logo espiral en la esquina inferior derecha. Sin embargo, rápidamente la competencia las eliminó con programas de edición de imágenes.
La agencia quiere que usted cree un programa que estampe el logo como una marca de agua en toda la imagen. El logo de la agencia consiste en una espiral ``cuadrada''. Para esta versión se quiere un programa que reciba en la entrada estándar las dimensiones de una fotografía y produzca en la salida estándar una representación de los pixeles que serían estampados con la marca de agua.
La entrada consta de las dimensiones en ancho y alto en pixeles de la imagen. Es seguida por el punto de entrada, que es un código entre 1 y 8 que indica el extremo de la imagen donde empezará a dibujarse la espiral. Este código además define la orientación de la espiral como se aprecia en la figura.
Ejemplo de entrada 1:
6 5 4
Ejemplo de salida 1:
@@@@@@ @....@ @.@@.@ @..@.@ @@@@.@
El programa debe imprimir la marca de agua que estará en la imagen. La marca de agua es una espiral "cuadrada" que inicia por el punto de entrada y se va plegando sobre sí misma cuando topa con pared o cuando topa con un segmento de la espiral misma. De acuerdo al logotipo de la agencia, todo segmento de la espiral debe tener al menos 3 pixeles antes de poder plegarse. En la salida estándar, los pixeles que serán afectados por la marca de agua se imprimen con el símbolo de arroba (@
), mientras que los pixeles que no serán afectados, se imprimen con puntos (.
).
Ejemplo de entrada 2:
10 10 1
Ejemplo de salida 2:
@@@@@@@@@@ .........@ @@@@@@@@.@ @......@.@ @.@@@@.@.@ @.@..@.@.@ @.@....@.@ @.@@@@@@.@ @........@ @@@@@@@@@@
Recuerde reutilizar código al máximo. Nota: Tenga en cuenta que el ancho (width) y alto (height) de una imagen corresponden con la cantidad de columnas y filas de una matriz, respectivamente.
Evaluación
El examen es estrictamente individual. En todos los rubros se evaluarán las buenas prácticas de programación, en especial la reutilización de código.
-
[50%] Diseño de un algoritmo procedimental usando los 8 tipos de instrucciones que resuelve el problema planteado. El algoritmo debe quedar plasmado en comentarios del código fuente.
-
[50%] Implementación del algoritmo en el lenguaje de programación C.
-
[10% extra] Hacer las correcciones que necesite para que su solución compile y pase los casos de prueba. Dispone de 24 horas después de la prueba.