Programación I Práctica parcial (ENTREGA OBLIGATORIA)

Anuncio
Programación I
Práctica parcial (ENTREGA OBLIGATORIA)
Práctica 1: diagrama de barras
Escribid un programa que, dado un array de 10 enteros (introducidos a mano en el
código), genere un diagrama de barras que represente sus valores. El diagrama ha de
cumplir los siguientes requisitos:
-
las barras irán de abajo a arriba, de forma que la barra más larga ha de acabar en
la línea siguiente a la de ejecución, y no más abajo
las barras estarán formadas por un carácter que determine el usuario
el grosor de cada barra también estará determinado por el usuario
entre dos barras habrá tantos espacios en blanco como determine el usuario.
Por ejemplo, si los tres primeros elementos del array son 3-2-4, el carácter que forma las
barras es el asterisco, el grosor es 3 y la separación entre barras 2, la parte
correspondiente del diagrama de barras será:
C:\...> practica1
***
***
***
*** *** ***
*** *** ***
Fijaos cómo no hay ninguna línea en
blanco entre el comando de ejecución y
el primer asterisco
Práctica 2a: juego del laberinto
El siguiente recuadro representa un mapa, donde cada cruz representa un obstáculo:
A
B
C
D
E
X
X
5
4
3
2
1
X
X
X
X
El usuario debe elegir una casilla de origen en la que se sitúa un personaje y una de
destino (o tesoro). El usuario indicará dichas casillas de origen y destino mediante sus
coordenadas. Por ejemplo origen 1A y destino 5E. A continuación, el programa debe
representar por pantalla el mapa anterior, mostrando los obstáculos (con el carácter ‘X’),
la posición del personaje (identificado con el carácter ‘O’) y el destino (identificado por
el carácter ‘$’). Las casillas vacías se representarán mediante un guión. Para una mejor
visualización, entre dos celdas de una misma fila se dejará un espacio en blanco. Así
pues, el mapa inicial se representaría así:
X
O
X
–
X
X
X
D
X
-
El objetivo del juego es que el usuario vaya moviendo el personaje de la casilla origen a
la casilla destino. El programa debe controlar que no vaya a una casilla marcada con un
obstáculo, ni se salga del tablero. El usuario decide el movimiento indicando la
dirección mediante:
-
A: Arriba
B: aBajo
I: Izquierda
D: Derecha
Si el usuario indica un movimiento incorrecto, el programa debe avisarle y pedirle que
repita el movimiento. Si el movimiento es correcto, debe a continuación dibujar el mapa
situando el personaje (carácter ‘O’) en el nuevo lugar correspondiente. Si el movimiento
lleva a la casilla destino, el programa debe indicar que el usuario ha conseguido acabar
el juego y el programa termina.
Práctica 2b: juego del laberinto con monstruo
La base del juego es la misma, pero se añade un monstruo que si llega a coincidir con el
personaje en la misma casilla, hace que el juego termine y el usuario pierda (el
monstruo se come al personaje).
El usuario seleccionará la casilla inicial del monstruo. Cada vez que el usuario
determine el siguiente movimiento del personaje, el programa generará un movimiento
aleatorio del monstruo. El programa deberá comprobar que ese movimiento es legal (no
puede caer en un obstáculo ni salir del tablero), y si no lo es obtener otro. Asimismo, el
programa, una vez obtenido un movimiento legal (del personaje o del monstruo), debe
comprobar si el monstruo come al personaje, y en tal caso, terminar la partida. Cuando
se represente el mapa, también debe mostrarse la posición del monstruo, mediante el
carácter ‘M’.
NOTA: cómo generar un número aleatorio en C (entre 0 y 3)
Al principio del programa hay que llamar a la función iniciar_aleatorios. Y después,
cada vez que se quiera un nuevo número aleatorio, llamar a la función aleatorio4. Hay
que incluir las librerías stdlib y stdio. Por ejemplo, el siguiente programa muestra 10
números aleatorios entre 0 y 3 seguidos:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void iniciar_aleatorios()
{
srand((unsigned)time(NULL));
}
int aleatorio4()
{
return rand()%4;
}
main()
{
int i;
iniciar_aleatorios();
for (i=0;i<10;i++)
printf("%d\n",aleatorio4());
}
Para vuestro programa, tendréis además que pasar del entero 0 a 3 al carácter ‘A’, ‘B’,
‘I’ o ‘D’, mediante una estructura condicional.
Documentación y memoria
Además del correcto funcionamiento del programa, se valorará:
-
Estructuración en funciones (y facilidad para la reutilización)
Documentación del código (y legibilidad)
Así mismo, hay que entregar una memoria (documento en Word o RTF) en la que se
incluya una explicación del funcionamiento general del código, y se justifiquen las
funciones utilizadas. Además, cada función debe ser descrita brevemente.
Indicaciones para la entrega
La entrega de esta práctica es obligatoria. La fecha límite de entrega es la siguiente, en
función del grupo de prácticas en que estéis matriculados (atención a los que no estén
acudiendo a las sesiones de su grupo!):
-
P13: miércoles 9 de noviembre, antes de las 8:30 de la mañana
P12: jueves 10 de noviembre, antes de las 8:30 de la mañana
P11: viernes 11 de noviembre, antes de las 8:30 de la mañana
P22: jueves 10 de noviembre, antes de las 15:00
P21: lunes 14 de noviembre, antes de las 14:30
Depositad la carpeta con vuestro trabajo, incluyendo la memoria, (el nombre de la
carpeta será vuestros nias, separados por un guión bajo, por ejemplo “31234_32345”)
en la carpeta de vuestro grupo correspondiente (P11, P12, P13, P21 o P22), dentro de
\\recursos\public\FOLDERS\3371-3372\12406\alumnes\practica_parcial
Si una vez copiada tenéis algún problema o tenéis que hacer algún cambio, volvedlo a
copiar desde una carpeta nueva añadiendo "_b" al nombre, por ejemplo
"31234_32345_b"
Recordad que el compilador a utilizar es gcc, en Linux o en Cygwin. Los ficheros
que no puedan compilarse con gcc no se corregirán.
Descargar