Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Personalize - Sistemas

Grupos Randômicos

Recommended Posts

Bom Dia, minha dúvida é a seguinte:

 

estou desenvolvendo um gerenciador de eventos esportivos. Já consegui fazer as combinações de jogos, mas cheguei num ponto sem saída.

 

Tenho 10 equipes que vão ser divididas em 3 grupos ai o bicho pega. Já consegui fazer quando são somente dois grupos. Segue abaixo a rotina que separa em dois grupos:

 

var
I,RND : Byte;
ListaRND : TStringList;
begin
try
ListaRND := TStringList.Create;
for I := 1 to Tb_CompEquipes.RecordCount do
ListaRND.Add(IntToStr(I));
Randomize;
while not (ListaRND.Count = 0) do
begin
RND := Random(ListaRND.Count);
Tb_Final.Edit;
Tb_Final.Append;
Tb_FinalNUMERO.Value := StrToFloat(ListaRND[RND]);
if StrToFloat(ListaRND[RND]) <= (Tb_CompEquipes.RecordCount/3) then
begin
Tb_FinalGRUPO.Value := 'A';
end;
if StrToFloat(ListaRND[RND]) > (Tb_CompEquipes.RecordCount/3) then
begin
Tb_FinalGRUPO.Value := 'B';
end;
//Memo1.Lines.Add(ListaRND[RND]);
ListaRND.Delete(RND);
end;
finally
//FreeAndNil(ListaRND);
//Delphi3 Não tem FreeAndNil()
ListaRND.Free;
end;
Quem puder me ajudar a resolver este problema ficarei muito grato. Só mais um detalhe vou precisar de no mínimo 12 grupos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão aqui é: como você vai controlar em que grupo a equipe deve entrar? Porque no mínimo terá que usar dois loopings... um pra pegar as equipes, outro pra escolher em que grupo essa equipe será incluído... e aqui entra a questão chave: qual a regra pra determinar se a equipe vai entrar no grupo 1 ou no 12? Isso você não está deixando claro como pretende controlar... mas basicamente são dois loopings que terá que usar e dentro do segundo looping por a regra pra determinar o grupo da equipe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa Tarde Chonos, o BD tem os seguintes campos Codigo, equipe e grupo:

 

1º) Eu seleciono as Equipes

2º) Coloco a Letra correspondente ao Grupo, no campo Grupo <- Eis a questão. Para 2 grupos (A e B) já esta pronto, o,problema é qdo tenho 3 ou mais grupos.

 

Com relação a regra de distribuição das equipes é aleatória.

 

Obrigado pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem, a questão continua: como você irá preencher os grupos? Cada grupo tem um limite de quantas equipes? Eles tem que ser preenchidos uniformemente ou pode um grupo ser totalmente preenchido enquanto outro está vazio? Você precisa num primeiro momento definir estas regras.... depois, você tem que ter uma estrutura para contabilizar quantos times já foram inseridos no grupo para saber se ainda há vagas nele disponível (uma matriz por exemplo). Ai, com base nisso, você pode criar um algoritmo que irá gerar um número aleatório entre 1 e N (sendo N o total de grupos), validar se o mesmo ainda tem uma vaga a ser preenchida e, se possuir, pegar a letra correspondente ao grupo e atribuir a equipe, senão gerar outro valor randômico e refazer o teste... resumindo, seria algo do tipo o algoritmo:

 

 

Selecionar as equipes
Para cada equipe, faça
inicio
      Enquanto não atribuir um grupo a equipe faça
      inicio
           Gerar um valor randômico de grupo
           Se total de equipes do grupo < total máximo de equipes por grupo então
           inicio
                Captura código do grupo (letra que representa)
                Atribui a equipe o grupo
           fim
       fim
fim

 

Sacou o esquema? A questão é só pensar nas regras antes de montar o algoritmo com a solução do código... por isso questionei quais as regras de controle que vai usar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.