| Usuario |
Miren mi PROYETO FINAL!!! Algun co... |
Desconocido
|
| Enviado - 14/12/2004 |
| |
OBJETIVO
Se pretende crear una aplicación para gestionar un torneo de una competición deportiva cualquiera.
En cualquier competición, existen una serie de participantes y un conjunto de enfrentamientos que
terminan con un resultado particular. Podemos considerar que los enfrentamientos se realizan en
rondas o jornadas, y que tras cada jornada existe una clasificación de los competidores atendiendo a
los resultados obtenidos hasta ese momento.
La aplicación que se desarrolle deberá ser capaz de almacenar información sobre participantes y
resultados en la competición, así como de presentar clasificaciones de los participantes según el
estado de la competición y generar los enfrentamientos para cada jornada.
DESARROLLO
Para simplificar el desarrollo de la aplicación, vamos a determinar una serie de restricciones que se
deben satisfacer en todo momento:
• El número de participantes en la competición será par, y no podrá exceder de 10.
• Cada participante deberá enfrentarse con todos los demás participantes. Así, por ejemplo, si
hubiesen 8 participantes, la competición constaría de 7 jornadas en las que cada participante
se enfrenta con todos los demás.
• Los resultados de un enfrentamiento pueden ser victoria de un participante frente a otro, o
empate entre los dos participantes, para lo cual se asignará una puntuación de 0 puntos para
una derrota, 3 puntos para una victoria y 1 punto para un empate (para los dos participantes).
• La clasificación de los participantes en un momento dado se calcula como una ordenación
descendente de los mismos a partir de la suma de los puntos obtenidos en sus
enfrentamientos hasta el momento en que se obtiene la clasificación, de modo que el jugador
que más puntos tenga será el primer clasificado, y el jugador que menos puntos tenga será el
último clasificado. No existe ningún criterio de desempate en caso de que varios
participantes coincidan en el número de puntos obtenidos.
• Toda la información de participantes, jornadas y resultados se debe almacenar en un fichero
de texto, pero no las clasificaciones, que se deberán calcular en cada momento cuando lo
solicite el usuario a la aplicación.
Funcionamiento
El programa debe poder trabajar con un torneo ya creado (cuya información se almacena en un
fichero y se carga en el programa) o bien crear un torneo nuevo.
Cuando se cree un nuevo torneo, se deberán introducir el número de participantes (un número par)
y los nombres de todos los participantes del torneo, tras lo cual, se generarán todas las jornadas con
todos los enfrentamientos.
El programa debe permitir introducir resultados de cada jornada, de forma que no se podrán
introducir resultados de una jornada si no se han llenado los resultados de la jornada anterior.
El programa también permitirá visualizar los resultados de cualquier jornada, así como la
clasificación de todos los participantes en una jornada concreta.
Una de las opciones del programa debe permitir almacenar en un fichero el estado actual del torneo,
lo que implica guardar el número de participantes, sus nombres, los emparejamientos de cada ronda
y los resultados de los encuentros en cada jornada. Este fichero será el que se utilice para cargar un
torneo y trabajar sobre él.
Opciones
El programa funcionará a través de un menú con las siguientes opciones:
1. Cargar torneo.
2. Crear un torneo nuevo.
3. Introducir resultados de jornada.
4. Ver resultados de una jornada.
5. Ver clasificación en una jornada.
6. Guardar torneo.
7. Salir del programa.
Estas opciones se implementarán a través de un menú, que será lo primero que se muestre al
ejecutar la aplicación, y será de tipo cíclico, es decir, tras cada operación se volverá al menú
principal.
El programa finalizará cuando el usuario elija la opción de Salir del programa.
Formato del fichero
El fichero de almacenamiento de los torneos será de tipo texto plano, donde se almacenará la
siguiente información:
• En la primera línea, el número de participantes (n)
• En la segunda línea, el número de jornadas transcurridas
• En las siguientes n líneas, los nombres de los n participantes
• En las siguientes líneas, se almacenarán los emparejamientos con los resultados, de forma
que se utilizarán números naturales que corresponderán a cada participante para indicar el
emparejamiento. En cada línea aparecerán 2 números naturales separados por un espacio en
blanco, correspondientes a los participantes que se enfrentan, y a continuación (tras un
espacio en blanco) dos números separados por un espacio que indican el resultado del
enfrentamiento (las posibles variantes son 1 1 (empate), 3 0 (victoria del primero) y 0 3
(victoria del segundo)).
Por ejemplo, un fichero de un torneo para 4 participantes puede ser el siguiente:
4
2
Andres Lopez Cuesta
Juan Martinez Fernandez
Pablo Casanova Perez
Julian Andujar Carrasco
1 4 1 1
2 3 3 0
1 3 0 3
2 4 0 3
1 2
3 4
En este ejemplo se puede observar que hay 4 participantes (3 jornadas de 2 enfrentamientos cada
una), y se han introducido los resultados de las 2 primeras jornadas. Por ejemplo, en la primera
jornada se han enfrentado Andrés López Cuesta con Julián Andujar Carrasco, con un resultado de
empate, y Juan Martínez Fernández con Pablo Casanova Pérez, con resultado de victoria del
primero.
Algoritmo de cálculo de emparejamientos
Para determinar los emparejamientos en cada jornada, tomamos el requisito de que todos los
participantes (un número par) se enfrentan entre sí, lo que supone que ante un número de n
participantes se generarán n-1 jornadas, con n/2 enfrentamientos en cada jornada, de manera que no
queden participantes sin emparejar en una misma jornada, y no se repitan los emparejamientos en
diferentes jornadas.
Con todo, el algoritmo que se puede utilizar es el siguiente:
En la ronda k (1 <= k < n) el equipo i<n jugará con el j<n si (i+j) mod (n-1) = k mod (n-1) donde j
es distinto de i. Cuando i=j, es decir que 2i mod (n-1) = k mod (n-1), el equipo i juega contra el n.
|
| |
|
Desconocido
|
| Enviado - 21/12/2004 |
| |
me gusta el proyecto
Te pediria, si es posible, que una vez terminado me lo hagas llegar a esta direccion
[email protected]
muchas gracias
Hernando |
| |
|
|
|