Visual Basic - A ver como andais de lógica ;)

Life is soft - evento anual de software empresarial
 
Vista:

A ver como andais de lógica ;)

Publicado por Xi0N (64 intervenciones) el 03/02/2005 15:06:17
Estoy haciendo una aplicación que gnera ligas: metes un numero par de equipos y genero los encuentros de una liga entera, jornada por jornada.Es mu chungo porque con random no se puede: Se repetirían, y eso en una liga solo se puede una vez: Partido de ida-partido de vuelta. Estoy bastante atascado con esto, ya que hay que hacer un algoritmo a mi parecer, bastante complejo. Aceptare cualquier idea. Gracias ;)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:A ver como andais de lógica ;)

Publicado por Anonimo (37 intervenciones) el 03/02/2005 16:07:51
Podran darte alguna idea si aprendes a explicarte bien primero!!!! una cuestion logica! no te parece?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:A ver como andais de lógica ;)

Publicado por Xi0N (64 intervenciones) el 03/02/2005 21:03:06
Tengo por ejemplo, 8 equipos, que tienen su ID de equipo en una tabla (0,1,2,3,4,5,6,7) Tengo que generar una liga combinando estas id. El equipo 0 contra el equipo 1 el 2 contra el 3..... La dificultad esta en que tengo que dividir la liga en jornadas (Numero de equipos de la liga -1 * 2) Hay partidos de ida y de vuelta (los de vuelta son los de ida pero al revés, por lo tanto esto no tiene complicación. Y lo dificil es que de una jornada a otra los encuentros no se pueden repetir, pero cada equipo tiene que jugar sólo 1 vaz con cada otro equipo.
Al final, he pensado en almacenar esto en una tabla..... No se, creo que es demasiado complejo. No pido a nadie que haga el trabajo por mi, simplemente que me de alguna idea, ya que es bastante dificil. Sólo eso, por eso cualquier ayuda es bastante. Gracias de nuevo y perdon por no saber explicarme bien (Tampoco es que sea fácil explicar esto) ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:A ver como andais de lógica ;)

Publicado por Agustin (18 intervenciones) el 03/02/2005 23:31:45
Hola, espero poder darte un idea, es con lo que alcanzo a entender de tu explicacion:

Podrias basarte de un vector mismo del numero de equipos, por ejemplo 8,

Cuando empiece la asignacion harias lo siguiente:
Limpias el vector, asignas 0 a todas las posiciones o valor null.

Tomas el indice 1, que es el quipo 1, generas un numero aleatorio del 1 al 8 y que sea diferente al indice seleccionado. Una vez que lo genera por ejemplo el 2, revisa en las 8 posiciones que no este asignado a nadie, de ser asi, lo asignas al indice1 y ya definiste que el equipo 1 jugara con el equipo 2. si lo encuentras pues es ovbio que ya definiste a ese equipo para jugar con alguien, entonces vuelves a generar un nuevo numero. y a comparar nuevamente.

preguntas al inidice si tiene algun valor, si lo tiene verifica que sea diferente a 2, si es diferente lo asignas, asi ya definiste que el equipo 0 jugara con el 2,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:PERDON SE ENVIO ANTES DE TERMINAR

Publicado por Agustin (18 intervenciones) el 03/02/2005 23:41:07
Hola, espero poder darte un idea, es con lo que alcanzo a entender de tu explicacion:

Podrias basarte de un vector mismo del numero de equipos, por ejemplo 8,

Cuando empiece la asignacion harias lo siguiente:
Limpias el vector, asignas 0 a todas las posiciones o valor null.

Tomas el indice 1, que es el quipo 1, generas un numero aleatorio del 1 al 8 y que sea diferente al indice seleccionado. Una vez que lo genera por ejemplo el 2, revisa en las 8 posiciones que no este asignado a nadie, de ser asi, lo asignas al indice1 y ya definiste que el equipo 1 jugara con el equipo 2. si lo encuentras pues es ovbio que ya definiste a ese equipo para jugar con alguien, entonces vuelves a generar un nuevo numero. y a comparar nuevamente.

Para la siguiente ronda no borres el vector.
y cuando hagas la busqueda del valor generado en el vector, si marca que lo encontro, entonces asegurate que la posicion donde lo encontro no sea la que seleccionaste. Como en el caso anterior, empezamos en el 0, y le asignaste el 2. Ahora con la nueva asignacion resulta que como primer valor aletaorio recibiste el 2, lo buscas en el vector, y si lo encuentra, pregunta por la posicion, si es la misma a 0 no la asignes, si es diferente la asignas a 0, y como fue diferente borrale el valor a la posicion donde se encontro el 2.

Espero poder darme a entender yo tambien.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:A ver como andais de lógica ;)

Publicado por Agustin (18 intervenciones) el 04/02/2005 00:05:45
Procedimiento EncuentrosJornada()

int vector[8]
int valor
int i,j

ciclo de i=0 hasta 8
{
valor = GenerarValor(i)

ciclo de j=0 hasta 8
{
si vector[j]=valor
if j=i
salir del ciclo j
i=i-1 //Con esto aseguras de que no se incremente i, si es 0,
sería 1 el siguiente valor, pero si le restamos 1
quedará -1, por lo tanto el siguiente valor será 0.
Asi será hasta que este condición ya no se cumpla.
sino
vector[i]=valor
fin de condicion
sino
vector[i]=valor
salir del ciclo j
fin de condicion
}

}

fin de procedimiento

funcion GenerarValor(int Posicion)

int valortmp

valortmp=random entre 0 y 7

si valortmp es diferente a Posicion
Regresar valortmp
sino
GenerarValor(Posicion)
fin de condición

fin de funcion
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar