SESIÓN DE EJERCICIOS E6

Transcripción

SESIÓN DE EJERCICIOS E6
SESIÓN DE EJERCICIOS E6
Escribe los tipos de datos y las cabeceras de la funciones que son necesarios para
implementar los siguientes problemas. No está permitido utilizar variables globales.
1. Letras en frase
A partir de una frase (sólo con letras en minúsculas y espacios en blanco) que introduce
el usuario queremos saber cuántas veces aparece cada letra y cuál es la que más veces
aparece.
2. Palabras en frase
A partir de una frase que introduce el usuario queremos saber qué palabras aparecen y
cuántas veces cada una.
3. Colores
Una pantalla a resolución 1024x768 tiene 1024x768 píxeles. Para cada píxel guardamos
su color en RGB. Supongamos que tenemos una matriz de 1024x768, donde cada celda
contiene el color correspondiente. El programa deberá:
- Permitir al usuario cambiar el color correspondiente a un píxel concreto
- Calcular cuántos píxeles hay de un color concreto que introduzca el usuario
(mediante sus valores R, G y B)
4. La lista de estudiantes
Queremos hacer una aplicación para gestionar la lista de estudiantes de un grupo de la
asignatura Programación I. Sabemos que como máximo habrá 100 estudiantes en un
grupo. En este ejercicio sólo nos interesa guardar el nombre, nia, y todas las notas de un
estudiante (examen parcial, examen final, práctica parcial, práctica final). La nota final
del estudiante se obtiene como en la asignatura. La aplicación debe permitir:
-
añadir nuevos estudiantes
poner una determinada nota a un estudiante
ver el listado con todos los alumnos ordenados alfabéticamente
ver el listado con todos los alumnos ordenados por nota final
calcular el porcentaje de aprobados y suspendidos
5. La lista de estudiantes dinámica
El mismo ejercicio que el anterior pero ahora sin tener un límite de 100 estudiantes por
grupo. Es decir, el tamaño de la lista es dinámico y lo determina el usuario al principio
de la ejecución.
6. Observatorios meteorológicos
Supongamos que tenemos cuatro observatorios meteorológicos en Cataluña, uno por
cada capital de provincia. Para cada uno de ellos se han recogido una serie de datos cada
día del año. Dichos datos son:
-
temperatura máxima
temperatura mínima
precipitaciones totales
Necesitamos un programa que permita:
- introducir esos valores de forma manual en nuestro programa: el usuario
selecciona el día, mes y provincia y a continuación introducirá los valores.
- Obtener la media de las temperatura máximas en cada ciudad para cada mes
- Ídem para la media de las temperaturas mínimas
- Obtener el total de precipitaciones en cada ciudad para cada mes
- Obtener el día, mes y ciudad en que se produce la temperatura más alta del año
- Ídem con las más baja
7. Mastermind
El juego del mastermind consiste en, dado un panel con 5 posiciones en las que se
colocan ocultos 5 elementos (típicamente colores), adivinar la combinación de dichos
elementos. Para ello el jugador propone una posible combinación y el sistema le indica
cuántos de los 5 elementos están colocados en el lugar adecuado y cuántos lo están en
un lugar incorrecto.
Para esta implementación en vez de colores utilizaremos números del 0 al 9. La
disposición inicial del panel se introduce en la declaración de variables. El programa
debe permitir al usuario introducir sus intentos (por ejemplo “12345”) y a continuación
presentar la respuesta adecuada (por ejemplo “xx+--” que indica dos en el lugar
adecuado, uno en lugar inadecuado y dos que no aparecen). El sistema acaba cuando el
usuario adivina la combinación.
8. El juego del laberinto (extraído de la práctica parcial curso 2005/06)
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.
9. Variación del juego del laberinto (extraído de la práctica parcial curso 2005/06)
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’.
10. El juego de la vida (extraído de la práctica final curso 2005/06)
El siguiente recuadro representa un escenario donde cada casilla es un espacio en el que
puede vivir una célula.
-
- - - - - - - * *
- - - - - - - - - - - - -
*
-
*
-
-
-
-
-
Una casilla con el carácter * indica que hay una célula viva en dicha casilla. Una casilla
con el carácter – indica que hay una célula muerta en dicha casilla. Cada casilla sólo
puede tener o bien una célula viva o bien una célula muerta.
A partir de una configuración inicial de células (que se fija en la declaración de
variables), el escenario evoluciona basándose en las siguientes reglas de transición:
-
cualquier célula viva con menos de 2 vecinos vivos muere por soledad.
cualquier célula viva con más de 3 vecinos vivos muere por superpoblación.
cualquier célula viva con 2 ó 3 vecinos vivos sigue viviendo .
cualquier célula muerta con exactamente 3 vecinos vivos renace (al turno
siguiente estará viva).
Es importante comprender que todos los nacimientos y muertes ocurren
simultáneamente. Juntos hacen al sistema evolucionar de una generación a la siguiente.
El programa debe simular la evolución de la población de células después de un número
determinado de generaciones que determina el usuario. Al final del proceso, el
programa debe mostrar:
- el recuadro final de las células
- una tabla de 10 x 10 casillas en la que se indique, en cada casilla, el número de
generaciones en que hubo vida en dicha casilla
- Las coordenadas de la casilla dónde vivió la célula más longeva
11. La lliga de futbol (extret de la pràctica final curs 2004/05)
Volem fer un programa per gestionar una petita lliga de futbol. El nombre d’equips és
petit: només 4. Cada equip pot tenir fins a un màxim de 22 jugadors inscrits. El
campionat es juga a doble volta (és a dir, cada equip juga 6 partits, 3 a cada i 3 a fora).
El programa ha de permetre l’usuari introduir els jugadors de cada equip (nom I dorsal)
els resultants dels diferents partits, així com quins jugadors de cada equip han marcat els
gols. A continuació, el vostre programa ha de permetre:
1. Generar la classificació.
o Guanyar un partit suposa sumar 3 punts, empatar 1 punt i perdre 0.
o En cas d’empat final a punts entre dos o més equips, s’ha de calcular la
diferència entre els gols marcats i rebuts (quan major sigui la diferència,
millor classificació).
o En cas de què també estiguin empatats, l’ordre en la classificació serà
l’alfabètica
2. Histograma:
o Heu de mostrar per pantalla l’histograma (diagrama de barres) que
representi els punts que ha obtingut cada equip.
3. Calcular (i mostrar per pantalla) quin és el jugador màxim(s) golejador(s) del
campionat. En el cas en què hi hagi més d’un jugador empatats com a màxim
golejador, el guanyador serà el que hagi marcat a més partits. Si continua havent
empat, el guanyador serà el primer alfabèticament
12. El MicroCine (extraído de la práctica parcial curso 2003/04)
Tenemos un MicroCine de 5 salas, en cada una de las cuales proyectamos 3 sesiones
diarias. El aforo de cada sala es, por orden, de 20, 25, 10, 15 y 12 asientos.
Queremos desarrollar una aplicación que gestione la venta automática de localidades, y
que nos proporcione resúmenes sobre el número de espectadores a lo largo día.
Para ello la aplicación presenta un menú con dos opciones (más una para salir de la
aplicación).
Opción 1. Comprar entradas.
Esta opción es la que se encarga de realizar la compra-venta de entradas.
La aplicación solicita la sala y la sesión, y el número de entradas que el cliente desea
comprar.
La aplicación debe verificar la disponibilidad de asientos disponibles para la sesión
elegida, y si no hay disponibles, dar al usuario la posibilidad de elegir otra sala/sesión o
cancelar la compra.
Opción 2. Estadísticas.
Al seleccionar esta opción la aplicación nos mostrará un resumen de las ventas,
indicando el número total de espectadores, la recaudación del día y cuál es la sala y
sesión con más público.

Documentos relacionados