Tema: Sorteo
Ver Mensaje Individual
  #4  
Antiguo 22-08-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por Valee Ver Mensaje
...
Aca es donde tengo el problema. La primer parte (del ejemplo que acabo de dar) ya lo hice, pero me falta repartir los 24 paises restantes en los grupos, y nose muy bien como usar el random.. Se que hay que usar el randomize para que varie la secuencia, pero realmente nose como realizar el sorteo..
...
Hola Valee.

A fin de simplificar te pongo un ejemplo que prescinde del uso de archivos :
Código Delphi [-]
...
implementation

type
  TEquipos = record
    Nomb: string;
    Posi: Integer;
    Check: Boolean;
  end;

var
  Equi: array[0..31] of TEquipos;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  Equi[0].Nomb := 'Alemania'     ; Equi[0].Posi:=   1; Equi[0].Check:= False;
  Equi[1].Nomb := 'Argentina'    ; Equi[1].Posi:=   2; Equi[1].Check:= False;
  Equi[2].Nomb := 'Holanda'      ; Equi[2].Posi:=   3; Equi[2].Check:= False;
  Equi[3].Nomb := 'Brasil'       ; Equi[3].Posi:=   4; Equi[3].Check:= False;
  Equi[4].Nomb := 'Colombia'     ; Equi[4].Posi:=   5; Equi[4].Check:= False;
  Equi[5].Nomb := 'Bélgica'      ; Equi[5].Posi:=   6; Equi[5].Check:= False;
  Equi[6].Nomb := 'Francia'      ; Equi[6].Posi:=   7; Equi[6].Check:= False;
  Equi[7].Nomb := 'Costa Rica'   ; Equi[7].Posi:=   8; Equi[7].Check:= False;
  Equi[8].Nomb := 'Chile'        ; Equi[8].Posi:=   9; Equi[8].Check:= False;
  Equi[9].Nomb := 'México'       ; Equi[9].Posi:=  10; Equi[9].Check:= False;
  Equi[10].Nomb:= 'Suiza'        ; Equi[10].Posi:= 11; Equi[10].Check:= False;
  Equi[11].Nomb:= 'Uruguay'      ; Equi[11].Posi:= 12; Equi[11].Check:= False;
  Equi[12].Nomb:= 'Grecia'       ; Equi[12].Posi:= 13; Equi[12].Check:= False;
  Equi[13].Nomb:= 'Argelia'      ; Equi[13].Posi:= 14; Equi[13].Check:= False;
  Equi[14].Nomb:= 'EEUU'         ; Equi[14].Posi:= 15; Equi[14].Check:= False;
  Equi[15].Nomb:= 'Nigeria'      ; Equi[15].Posi:= 16; Equi[15].Check:= False;
  Equi[16].Nomb:= 'Ecuador'      ; Equi[16].Posi:= 17; Equi[16].Check:= False;
  Equi[17].Nomb:= 'Portugal'     ; Equi[17].Posi:= 18; Equi[17].Check:= False;
  Equi[18].Nomb:= 'Croacia'      ; Equi[18].Posi:= 19; Equi[18].Check:= False;
  Equi[19].Nomb:= 'Bosnia'       ; Equi[19].Posi:= 20; Equi[19].Check:= False;
  Equi[20].Nomb:= 'C. Marfíl'    ; Equi[20].Posi:= 21; Equi[20].Check:= False;
  Equi[21].Nomb:= 'Italia'       ; Equi[21].Posi:= 22; Equi[21].Check:= False;
  Equi[22].Nomb:= 'España'       ; Equi[22].Posi:= 23; Equi[22].Check:= False;
  Equi[23].Nomb:= 'Rusia'        ; Equi[23].Posi:= 24; Equi[23].Check:= False;
  Equi[24].Nomb:= 'Ghana'        ; Equi[24].Posi:= 25; Equi[24].Check:= False;
  Equi[25].Nomb:= 'Inglaterra'   ; Equi[25].Posi:= 26; Equi[25].Check:= False;
  Equi[26].Nomb:= 'Corea del Sur'; Equi[26].Posi:= 27; Equi[26].Check:= False;
  Equi[27].Nomb:= 'Irán'         ; Equi[27].Posi:= 28; Equi[27].Check:= False;
  Equi[28].Nomb:= 'Japón'        ; Equi[28].Posi:= 29; Equi[28].Check:= False;
  Equi[29].Nomb:= 'Australia'    ; Equi[29].Posi:= 30; Equi[29].Check:= False;
  Equi[30].Nomb:= 'Honduras'     ; Equi[30].Posi:= 31; Equi[30].Check:= False;
  Equi[31].Nomb:= 'Camerún'      ; Equi[31].Posi:= 32; Equi[31].Check:= False;

  with StringGrid1 do
  begin
    ColCount:= 8;
    RowCount:= 5;
    for i:= 0 to 7 do
    begin
      Cells[i, 0]:= 'GRUPO '+Chr(Ord('A')+i); // Títulos de celda
      Cells[i, 1]:= Equi[i].Nomb; // llenar 1ro ~ 8vo
      Equi[i].Check:= True;
    end;
  end;

  Randomize;
end;

// Aquí se generan los 24 equipos restantes de forma aleatoria
procedure TForm1.btnGenerarClick(Sender: TObject);
var
  c, f, e, Done: Integer;
begin
  // Inicializar arreglo
  for e:= 8 to 31 do Equi[e].Check:= False;

  // Llenar las 24 posiciones restantes  al azar
  Done:= 0;
  for f:= 0 to 2 do
  begin
    for c:= 0 to 7 do
    begin
      repeat
        e:= 31-Random(24);
      until not Equi[e].Check or (Done = 24);
      Equi[e].Check:= True;
      Inc(Done);
      StringGrid1.Cells[c, 2+f]:= Equi[e].Nomb; // Mostrar
    end;
  end;
end;
...

Salida:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita