PDA

Ver la Versión Completa : Sorteo


Valee
17-08-2014, 07:48:59
Hola chi@s.. Bueno, les comento.. Estoy haciendo el fixture del mundial (obviamente tiene que ser valido para cualquier mundial!).. Voy por la parte del sorteo..
Para explicarles un poco como lo pense les cuento que hay dos librerias diferentes:
*LibreriaEnlace
*LibreriaCola
Con la LibreriaEnlace realizo todo lo que es la carga de los paises que van a participar en el mundial (es la primer instancia del programa). Entre todas las cosas que tiene el registro contenido en la libreria, tiene un campo llamado "PuestoAnterior" en el cual se almacena la posicion en que el pais salio en el ultimo lugar.. Esto me sirve para despues a la hora de hacer el sorteo de los grupos no se crucen entre ellos y para que, hasta el puesto 8, se coloque uno en cada grupo. Ejemplo:
PuestoAnterior: 8 Entonces China va a quedar en el Grupo H
Pais: China
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.. Les dejo parte del procedimiento que tengo hecho para que se les haya mas facil explicarme.

procedure TForm5.Button1Click(Sender: TObject);
var
pos: TipoPosicion; Eq1:TipoRegEquipo1; Eq2:TipoRegEquipo2;
RD: TipoRegDatos; Eq3:TipoRegEquipo3;Eq4:TipoRegEquipo4;
RC: TipoRegControl; Eq5:TipoRegEquipo5;Eq6:TipoRegEquipo6;
RDC: TipoRegColaD; Eq7:TipoRegEquipo7;Eq8:TipoRegEquipo8;
RCC: TipoRegColaC; Control: Cadena;Puesto: TipoPuesto;
Dato: Cadena;
begin
CrearMeEquipo1(Equipo1);
CrearMeEquipo2(Equipo2);
CrearMeEquipo3(Equipo3);
CrearMeEquipo4(Equipo4);
CrearMeEquipo5(Equipo5);
CrearMeEquipo6(Equipo6);
CrearMeEquipo7(Equipo7);
CrearMeEquipo8(Equipo8);
AbrirMe (Me);
//Primero ordeno los primeros 8 puestos distribuyendolo en los grupos
//El puesto nro 1 va en el grupo A, el 2 en el grupo B......
for Puesto:= 1 to _Ultimo do
begin
case Puesto of //El puesto, una vez que sale del for, se va modificando de acuerdo al
1: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
Eq1.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
end;
end;
2: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq2.Pais:= RD.Pais;
Eq2.Clave:= RD.Clave;
Eq2.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo2(Equipo2,Eq2);
Dato:= 'Grupo_B.Dat';
Control:= 'Grupo_B.Con';
CrearCola(Cola,Dato,Control);
end;
end;
3: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq3.Pais:= RD.Pais;
Eq3.Clave:= RD.Clave;
Eq3.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo3(Equipo3,Eq3);
Dato:= 'Grupo_C.Dat';
Control:= 'Grupo_C.Con';
CrearCola(Cola,Dato,Control);
end;
end;
4: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq4.Pais:= RD.Pais;
Eq4.Clave:= RD.Clave;
Eq4.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo4(Equipo4,Eq4);
Dato:= 'Grupo_D.Dat';
Control:= 'Grupo_D.Con';
CrearCola(Cola,Dato,Control);
end;
end;
5: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq5.Pais:= RD.Pais;
Eq5.Clave:= RD.Clave;
Eq5.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo5(Equipo5,Eq5);
Dato:= 'Grupo_E.Dat';
Control:= 'Grupo_E.Con';
CrearCola(Cola,Dato,Control);
end;
end;
6: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq6.Pais:= RD.Pais;
Eq6.Clave:= RD.Clave;
Eq6.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo6(Equipo6,Eq6);
Dato:= 'Grupo_F.Dat';
Control:= 'Grupo_F.Con';
CrearCola(Cola,Dato,Control);
end;
end;
7: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq7.Pais:= RD.Pais;
Eq7.Clave:= RD.Clave;
Eq7.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo7(Equipo7,Eq7);
Dato:= 'Grupo_G.Dat';
Control:= 'Grupo_G.Con';
CrearCola(Cola,Dato,Control);
end;
end;
8: begin
BuscarPuesto (Me,Puesto,pos);
seek (Me.C,pos);
read (Me.C,RC);
if RC.Sortiado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq8.Pais:= RD.Pais;
Eq8.Clave:= RD.Clave;
Eq8.Pos:=Puesto;
RC.Sortiado:= true;
InsertarInfo8(Equipo8,Eq8);
Dato:= 'Grupo_H.Dat';
Control:= 'Grupo_H.Con';
CrearCola(Cola,Dato,Control);
end;
end;
end;
end;
//Sortear el resto de los paises
end;

Desde ya MUCHAS GRACIAS por su tiempo..
Saludos =)

Casimiro Notevi
17-08-2014, 09:54:13
Por favor, Valee, para otras ocasiones recuerda poner títulos descriptivos a tus preguntas, gracias :)

matias.blanco
21-08-2014, 16:05:08
Hola Valee!

Tendrias el codigo de la libreria LibreriaCola que mencionas en el post?
De esa forma podría ver como esta programada y como ayudarte con el random.

Saludos.

ecfisa
22-08-2014, 04:04:41
...
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 :

...
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:
http://sia1.subirimagenes.net/img/2014/08/22/140822034955407046.jpg

Saludos :)

matias.blanco
25-08-2014, 15:12:30
Hola Valee!

Ecfisa te aporto una excelente aproximación a la resolución de tu problema, si estas dispuesta, al igual que en el otro hilo que abriste, subi todo tu proyecto para que te pueda ayudar a generar el sorteo levantando los países desde los archivos, que es donde tengo entendido, que almacenas la info.

Saludos.!!

Valee
25-08-2014, 22:27:52
Gracias Chicos! Al sorteo lo pude realizar.
Ahora tengo otra duda con el mismo trabajo. Resulta que el profesor nos hizo crear la cola mandandole el nombre del archivo, de la siguiente forma:
CrearCola(var Cola: TipoCola;Nombre: string);
De ser así, en cada proceso dentro de la librería, se tiene que poner el nombre¿? Porque ahora lo estoy necesitando y nose si se puede, o como hacerlo.. Como hago para entrar al GrupoA, o al GrupoD¿? ahí les mando la librera:

unit LibCola;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;

Const
_Ruta = ' ';
_PosNula= -1;
_Nulo= 0;
_Ultimo= 8;

Type
TipoPosicion= longint;
TipoClave= string[3];
Cadena= string[20];
TipoCantidad= longint;
TipoRegColaD= record
LocalClave: TipoClave;
EquipoLocal: Cadena;
GolesLocal: TipoCantidad;
VisitanteClave: TipoClave;
EquipoVisitante: Cadena;
GolesVisitante: TipoCantidad;
PuntosLocal: TipoCantidad;
PuntosVisitante: TipoCantidad;
Jugado: boolean;
Enlace: TipoPosicion;
end;
TipoArchivoColaD= file of TipoRegColaD;

TipoRegColaC = Record
Primero:TipoPosicion;
Ultimo:TipoPosicion;
Borrados:TipoPosicion;
Cantidad: TipoCantidad;
Editable: boolean;
end;
TipoArchivoColaC = File of TipoRegColaC;

TipoCola= record
D: TipoArchivoColaD;
C: TipoArchivoColaC;
end;

Procedure CrearCola ( var Cola: TipoCola; Dato:string; Control:string);
Procedure AbrirCola (var Cola:TipoCola);
Procedure CerrarCola (var cola:TipoCola);
Procedure Encolar (var Cola: TipoCola; Reg: TipoRegColaD);
Procedure Decolar (var Cola:TipoCola);
Procedure Frente (var Cola:TipoCola; var Reg: TipoRegColaD);
Function ColaVacia (var Cola:TipoCola): boolean;
Function Ultimo (var Cola: TipoCola): TipoPosicion;

implementation

Procedure CrearCola ( var Cola: TipoCola; Dato:string; Control:string);
var
i:TipoPosicion;
RC: TipoRegColaC;
begin
for i:=1 to _Ultimo do
begin
case i of
1: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
2: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
3: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
4: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
5: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
6:begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
7: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
8: begin
assign (Cola.D, _Ruta+Dato);
reset (Cola.D);
if (IORESULT <> 0)
then
rewrite (Cola.D);
assign (Cola.C, _Ruta+Control);
reset (Cola.C);
if (IORESULT <> 0)
then
begin
rewrite (Cola.C);
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
RC.Cantidad:= _Nulo;
RC.Borrados:= _PosNula;
RC.Editable:= true;
end;
end;
end;
end;
close (Cola.D);
close (Cola.C);
end;

Procedure AbrirCola (var Cola:TipoCola);
begin
reset (Cola.D);
reset (Cola.C);
end;

Procedure CerrarCola (var cola:TipoCola);
begin
close (Cola.D);
close (Cola.C);
end;

Procedure Encolar (var Cola: TipoCola; Reg: TipoRegColaD);
var
RC: TipoRegColaC;
RD: TipoRegColaD;
PosNueva: TipoPosicion;
RAux: TipoRegColaD;
begin
seek (Cola.C, _Nulo);
read (Cola.C, RC);
if RC.Borrados<>_PosNula //Recupero celula entre los borrados
then
begin
PosNueva:= RC.Borrados;
seek (Cola.D, PosNueva);
read (Cola.D, RD);
RC.Borrados:= RD.Enlace;
end
else
begin
PosNueva:= filesize (Cola.D);
if RC.Primero= _PosNula //Inserto en cola nueva o al final
then
begin
RC.Primero:= PosNueva;
RC.Ultimo:= PosNueva;
Reg.Enlace:= _PosNula;
end
else
begin
seek (Cola.D, RC.Ultimo);
read (Cola.D, RAux);
RAux.Enlace:= PosNueva;
seek (Cola.D, RC.Ultimo);
write (Cola.D, RAux);
RC.Ultimo:= PosNueva;
Reg.Enlace:= _PosNula;
end;
end;
RC.Cantidad:= RC.Cantidad+1;
seek (Cola.C, _Nulo);
write (Cola.C, RC);
seek (Cola.D, PosNueva);
write (Cola.D, Reg);
end;

Procedure Decolar (var Cola:TipoCola);
var
RC: TipoRegColaC;
RD: TipoRegColaD;
PosBorrado: TipoPosicion;
begin
seek (Cola.C, _Nulo);
read (Cola.C, RC);
if RC.Primero= RC.Ultimo //Elimino y paso a cola vacia
then
begin
PosBorrado:= RC.Primero;
seek (Cola.D, RC.Primero);
read (Cola.D, RD);
RD.Enlace:= RC.Borrados;
RC.Borrados:= RC.Primero;
RC.Primero:= _PosNula;
RC.Ultimo:= _PosNula;
end
else
begin
PosBorrado:= RC.Primero;
seek (Cola.D, PosBorrado);
read (Cola.D, RD);
RC.Primero:= RD.Enlace;
RD.Enlace:= RC.Borrados;
RC.Borrados:= PosBorrado;
end;
RC.Cantidad:= RC.Cantidad-1;
seek (Cola.C, _Nulo);
write (Cola.C, RC);
seek ( Cola.D, PosBorrado);
write (Cola.D, RD);
end;

Procedure Frente (var Cola:TipoCola; var Reg: TipoRegColaD);
var
RC: TipoRegColaC;
begin
seek (Cola.C, _Nulo);
read (Cola.C, RC);
seek (Cola.D, RC.Primero);
read (Cola.D, Reg);
end;

Function ColaVacia (var Cola:TipoCola):boolean;
var
RC: TipoRegColaC;
begin
seek (Cola.C, _Nulo);
read (Cola.C, RC);
if RC.Primero=_PosNula
then
ColaVacia:= true
else
ColaVacia:= false;
end;

Function Ultimo (var Cola: TipoCola): TipoPosicion;
var
RC: TipoRegColaC;
begin
seek (Cola.C,_Nulo);
read (Cola.C, RC);
Ultimo:= RC.Ultimo;
end;

end.

Valee
25-08-2014, 22:28:55
Van a Notar que en la creación de la cola no están puestos los nombres, es porque yo se lo mando por un procedimiento que cree aparte para realizar el sorteo, ese procedimiento es:

unit LOAuxSorteo;

interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, LibreriaArchivosEnlace, LibCola, LOAux,
RegEquipo1, Menu_Principal;

Procedure Repartir (var Me: TipoMe; var Eq1:TipoRegEquipo1; Puesto: TipoPuesto);

implementation

Procedure Repartir (var Me: TipoMe; var Eq1:TipoRegEquipo1; Puesto:TipoPuesto);
var
pos: TipoPosicion; RD,RAux: TipoRegDatos; RC: TipoRegControl;
RDC: TipoRegColaD; RCC: TipoRegColaC; Dato: Cadena;
Control: Cadena; Corte: boolean;
i,j,n,m: TipoPosicion;
begin
m:=4; //cantidad de paises que tiene que haber por equipo
CrearMeEquipo1(Equipo1);
//Primero ordeno los primeros 8 puestos distribuyendolo en los grupos
//El puesto nro 1 va en el grupo A, el 2 en el grupo B......
case Puesto of //El puesto, una vez que sale del for, se va modificando de acuerdo al
1: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
2: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
3: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
4: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
5: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
6: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
7: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
8: begin //sorteo
BuscarPuesto (Me,Puesto,pos);
seek (Me.D,pos);
read (Me.D,RD);
if RD.Sorteado=false
then
begin
seek (Me.D,pos);
read (Me.D,RD);
Eq1.Pais:= RD.Pais;
Eq1.Clave:= RD.Clave;
RD.Sorteado:= true;
Insertar (Me,RD,Pos);
InsertarInfo1(Equipo1,Eq1);
Dato:= 'Grupo_A.Dat';
Control:= 'Grupo_A.Con';
CrearCola(Cola,Dato,Control);
m:= m-1;
//Sortear los 3 paises restantes
corte:= false;
n:=1;
for i:=1 to m do
begin
while not corte do
begin
j:=Random (24);
seek (Me.D,j);
read (Me.D,RD);
seek (Me.D, RD.Enlace);
read (Me.D, RAux);
if RAux.Sorteado= true
then
begin
corte:= true;
Eq1.Clave:= RD.Clave;
Eq1.Pais:= RD.Pais;
InsertarInfo1(Equipo1,Eq1);
RAux.Sorteado:= true;
Insertar (Me,RAux,RD.Enlace);
end;
end;
end;
end;
end;
end;

end;
end.

Valee
25-08-2014, 22:29:51
La parte del sorteo concluye en este procedimiento:

procedure TForm5.Button1Click(Sender: TObject);
var
Puesto: TipoPuesto; Cola1,Cola2: TipoCola;
i, fil, col: TipoPos;
Eq1: TipoRegEquipo1;
RDC, RDC2: TipoRegColaD;
begin
AbrirMe (Me);
for Puesto:=1 to _ultimo do
begin
Repartir (Me,Eq1,Puesto);
AbrirCola(Cola);
Decolar (Cola);
for i:=1 to _RangoSup do //Primeras dos jugadas--> Pais1 VS Pais2
begin //--> Pais3 VS Pails4
case i of
1: begin
CapturarInfo1 (Equipo1,i,Eq1);
RDC.LocalClave:= Eq1.Clave;
RDC.EquipoLocal:= Eq1.Pais;
end;
2: begin
CapturarInfo1(Equipo1,i,Eq1);
RDC.VisitanteClave:= Eq1.Clave;
RDC.EquipoVisitante:= Eq1.Pais;
Encolar(Cola,RDC);
end;
3: begin
Decolar (Cola);
CapturarInfo1 (Equipo1,i,Eq1);
RDC.LocalClave:= Eq1.Clave;
RDC.EquipoLocal:= Eq1.Pais;
end;
4: begin
CapturarInfo1 (Equipo1,i,Eq1);
RDC.VisitanteClave:= Eq1.Clave;
RDC.EquipoVisitante:= Eq1.Pais;
end;
end;
end;
Decolar (Cola1);
Decolar (Cola2);
for i:=1 to _RangoSup do //Jugadas 3 y 4. Queda:
begin //Pais1 VS Pais3
if i=1 //Pais2 VS Pais3
then
begin
CapturarInfo1 (Equipo1,i,Eq1);
RDC.LocalClave:= Eq1.Clave;
RDC.EquipoLocal:= Eq1.Pais;
end
else
if i=2
then
begin
CapturarInfo1(Equipo1,i,Eq1);
RDC2.LocalClave:= Eq1.Clave;
RDC2.EquipoLocal:= Eq1.Pais;
end
else
if i=3 //Queda siempre como visitante
then
begin
CapturarInfo1 (Equipo1,i,Eq1);
RDC.VisitanteClave:= Eq1.Clave;
RDC2.VisitanteClave:= Eq1.Clave;
RDC.EquipoVisitante:= Eq1.Pais;
RDC2.EquipoVisitante:= Eq1.Pais;
end
else
begin
Encolar(Cola1,RDC);
Encolar(Cola2,RDC2);
end;
end;
Decolar (Cola1);
Decolar (Cola2);
i:= 4;
while i>=_RangoInf do // Pais4 VS Pais2
begin // Pais4 VS Pais1
if i=4
then //Queda siempre como Local
begin
CapturarInfo1 (Equipo1,i,Eq1);
RDC.LocalClave:= Eq1.Clave;
RDC2.LocalClave:= Eq1.Clave;
RDC.EquipoLocal:= Eq1.Pais;
RDC2.EquipoLocal:= Eq1.Pais;
end
else
if i=2
then
begin
CapturarInfo1(Equipo1,i,Eq1);
RDC.VisitanteClave:= Eq1.Clave;
RDC.EquipoVisitante:= Eq1.Pais;
end
else
if i=1
then
begin
CapturarInfo1(Equipo1,i,Eq1);
RDC2.VisitanteClave:= Eq1.Clave;
RDC2.EquipoVisitante:= Eq1.Pais;
end;
i:= i-1;
end;
Encolar (Cola1,RDC);
Encolar (Cola2,RDC2);
end;

//Mostrar en el Formulario

StringGrid1.Cells[0, 0]:= 'Local';
StringGrid1.Cells[1, 0]:= 'Visitante';
StringGrid2.Cells[0, 0]:= 'Local';
StringGrid2.Cells[1, 0]:= 'Visitante';
StringGrid3.Cells[0, 0]:= 'Local';
StringGrid3.Cells[1, 0]:= 'Visitante';
StringGrid4.Cells[0, 0]:= 'Local';
StringGrid4.Cells[1, 0]:= 'Visitante';
StringGrid5.Cells[0, 0]:= 'Local';
StringGrid5.Cells[1, 0]:= 'Visitante';
StringGrid6.Cells[0, 0]:= 'Local';
StringGrid6.Cells[1, 0]:= 'Visitante';
StringGrid7.Cells[0, 0]:= 'Local';
StringGrid7.Cells[1, 0]:= 'Visitante';
StringGrid8.Cells[0, 0]:= 'Local';
StringGrid8.Cells[1, 0]:= 'Visitante';

i:=1;
Fil:=1;
while i<=8 do
begin
Decolar (Cola);
case i of
1: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid1.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid1.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
2: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid2.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid2.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
3: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid3.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid3.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
4: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid4.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid4.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
5: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid5.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid5.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
6: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid6.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid6.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
7: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid7.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid7.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
8: begin
while fil<= Ultimo(Cola) do
begin
col:= 0;
while col<=1 do
begin
if col= 0
then
Stringgrid8.Cells[col,fil]:= RDC.EquipoLocal
else
Stringgrid8.Cells[col,fil]:= RDC.EquipoVisitante;
col:= col+1;
end;
fil:=fil+1;
end;
end;
end;
RDC.PuntosLocal:=0;
RDC.PuntosVisitante:=0;
Encolar (Cola,RDC);
i:= i+1;
end;
Edit1.Clear;
Edit1.SetFocus;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
Edit5.Clear;
Edit6.Clear;
Edit7.Clear;
Edit8.Clear;
Edit9.Clear;
Edit10.Clear;
Edit11.Clear;
Edit12.Clear;
Edit13.Clear;
Edit14.Clear;
Edit15.Clear;
Edit16.Clear;
Edit17.Clear;
Edit18.Clear;
Edit19.Clear;
Edit20.Clear;
Edit21.Clear;
Edit22.Clear;
Edit23.Clear;
Edit24.Clear;
Edit25.Clear;
Edit26.Clear;
Edit27.Clear;
Edit28.Clear;
Edit29.Clear;
Edit30.Clear;
Edit31.Clear;
Edit32.Clear;
Edit33.Clear;
Edit34.Clear;
Edit35.Clear;
Edit36.Clear;
Edit37.Clear;
Edit38.Clear;
Edit39.Clear;
Edit40.Clear;
Edit41.Clear;
Edit42.Clear;
Edit43.Clear;
Edit44.Clear;
Edit45.Clear;
Edit46.Clear;
Edit47.Clear;
Edit48.Clear;
Edit49.Clear;
Edit50.Clear;
Edit51.Clear;
Edit52.Clear;
Edit53.Clear;
Edit54.Clear;
Edit55.Clear;
Edit56.Clear;
Edit57.Clear;
Edit58.Clear;
Edit59.Clear;
Edit60.Clear;
Edit61.Clear;
Edit62.Clear;
Edit63.Clear;
Edit64.Clear;
CerrarMe (Me);
CerrarCola(Cola);
end;

Hay también un BuscarPuesto, que acá se los mando aparte:

function BuscarPuesto(Var Me:TipoMe;Torneo_anterior:TipoPuesto;Var PosAnterior:TipoPosicion):Boolean;
Var
Enc,Corte:Boolean;
RC:TipoRegControl;
RD:TipoRegDatos;
Primero:Tipoposicion;
Begin
Seek(Me.C,_Nulo);
Read(Me.C,RC);
Enc:=False;
Corte:=False;
PosAnterior:=_PosNula;
Primero:=RC.Primero;
While (Not Enc) and (Not Corte) and (Primero<>_PosNula) do
Begin
Seek(Me.D,Primero);
Read(Me.D,RD);
If (RD.Puesto_Anterior= Torneo_anterior) Then
Enc:=True
else
If RD.Puesto_Anterior > Torneo_anterior then
Corte:=True
else
Begin
PosAnterior:=Primero;
Primero:=RD.Enlace;
End;
End;
BuscarPuesto:=Enc;
End;

El problema ahora es que hay que cargar los goles, que lo hace el usuario. Y ahí caí en la cuenta que nose si se esta haciendo bien, porque no tengo la posibilidad de saber que grupo (archivo) estoy manipulando, porque no están encadenados..
Desde ya muchas gracias!!! =)

Valee
25-08-2014, 22:32:42
Me falto aclarar que realice un registro sin archivo, solo para poder separar los países elegidos en un registro aparte, y una vez almacenado en la cola se vuelve a reescribir dicho registro.. acá se los dejo

unit RegEquipo1;

interface

const
_RangoInf= 1;
_RangoSup=4;

type
TipoPos= _RangoInf-1.. _RangoSup;
RangoVector= _RangoInf.._RangoSup;
TipoCad= string[20];
TipoClave= string[3];

TipoRegEquipo1= record
Clave: TipoClave;
Pais: TipoCad;
end;

TipoVectorE1= array [RangoVector] of TipoRegEquipo1;

MeEquipo1= record
Vector1: TipoVectorE1;
Ultimo: TipoPos;
Maximo: TipoPos;
end;

procedure CrearMeEquipo1 (var Equipo1:MeEquipo1);
procedure InsertarInfo1 (var Equipo1:MeEquipo1; Reg:TipoRegEquipo1);
procedure EliminarInfo1 (var Equipo1:MeEquipo1; Pos:TipoPos);
function Buscar1 (var Equipo1:MeEquipo1; clave:TipoClave;var Pos:tipoPos):boolean;
function EstructuraLlena1 (var Equipo1:MeEquipo1):Boolean;
function EstructuraVacia1 (var Equipo1:MeEquipo1):Boolean;
Function PrimerElemento1 (var Equipo1:MeEquipo1):TipoPos;
Function UltimoElemento1 (var Equipo1:MeEquipo1):TipoPos;
Function ProximoElemento1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
function ElementoAnterior1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
procedure CapturarInfo1 (Var Equipo1:MeEquipo1;pos:tipopos;var Reg:TipoRegEquipo1);
function MeOrdenado1 (var Equipo1:MeEquipo1):boolean;
procedure OrdenarMe1 (var Equipo1:MeEquipo1);

implementation

procedure CrearMeEquipo1 (var Equipo1:MeEquipo1);
begin
Equipo1.Ultimo:= _RangoInf-1;
Equipo1.Maximo:= _RangoSup;
end;

procedure InsertarInfo1 (var Equipo1:MeEquipo1; Reg:TipoRegEquipo1);
begin
Equipo1.Ultimo:= Equipo1.Ultimo+1;
Equipo1.Vector1[Equipo1.Ultimo]:= Reg;//Inserta al final
end;

procedure EliminarInfo1 (var Equipo1:MeEquipo1; Pos:TipoPos);
begin
Equipo1.Vector1[Pos]:= Equipo1.Vector1[Equipo1.Ultimo];
Equipo1.Ultimo:= Equipo1.Ultimo-1;//Elimino por sustitucion
end;

function Buscar1 (var Equipo1:MeEquipo1; clave:TipoClave;var Pos:tipoPos):boolean;
var
Enc:boolean;
pos2:tipopos;
begin
Enc:= false;
pos:= _RangoInf;
while (not Enc) and (Pos<=Equipo1.Ultimo) do
begin
if (Equipo1.Vector1[pos].Clave= clave)
then
enc:=true
else
pos:=pos+1;
end;
Buscar1:=Enc;
end;

function EstructuraLlena1 (var Equipo1:MeEquipo1):Boolean;
begin
EstructuraLlena1:= (Equipo1.Ultimo= Equipo1.Maximo);
end;

function EstructuraVacia1 (var Equipo1:MeEquipo1):Boolean;
begin
EstructuraVacia1:= (Equipo1.Ultimo=_RangoInf-1);
end;

Function PrimerElemento1 (var Equipo1:MeEquipo1):TipoPos;
begin
if Equipo1.Ultimo=_RangoInf-1
then
PrimerElemento1:= _RangoInf-1
else
PrimerElemento1:= _RangoInf;
end;

Function UltimoElemento1 (var Equipo1:MeEquipo1):TipoPos;
begin
UltimoElemento1:= Equipo1.Ultimo;
end;

Function ProximoElemento1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
begin
if pos<Equipo1.Ultimo
then
ProximoElemento1:=pos+1
else
proximoElemento1:=_Rangoinf-1
end;

function ElementoAnterior1 (var Equipo1:MeEquipo1;pos:tipopos):tipopos;
begin //Devuelve el elemento anterior de la pos buscada
ElementoAnterior1:= pos-1;
end;

procedure CapturarInfo1 (Var Equipo1:MeEquipo1;pos:tipopos;var Reg:TipoRegEquipo1);
begin
Reg:=Equipo1.Vector1[Pos];
end;

function MeOrdenado1 (var Equipo1:MeEquipo1):boolean;
var
estaordenado: boolean;
i:tipopos;
begin
estaOrdenado:= true;
i:= _Rangoinf;
while (estaordenado) and (i<Equipo1.Ultimo) do
begin
if (Equipo1.Vector1[i].clave<=Equipo1.Vector1[i+1].clave)
then
i:=i+1
else
estaordenado:=false;
end;
MeOrdenado1:= estaOrdenado;
end;

procedure OrdenarMe1 (var Equipo1:MeEquipo1);
var
cantidad, pos,i: tipopos;
ordenado: boolean;
Aux: TipoRegEquipo1;
begin
Ordenado:=false;
cantidad:=1;

while (not Ordenado) do
begin
pos:=1;
Ordenado:=true;

while (i<=Equipo1.Ultimo-cantidad) do
begin

if (Equipo1.Vector1[pos].clave>Equipo1.Vector1[pos+1].clave)
then
begin
Aux:= Equipo1.Vector1[pos];
Equipo1.Vector1[pos]:=Equipo1.Vector1[pos+1];
Equipo1.Vector1[pos+1]:=aux;
Ordenado:=false;
end;
pos:=pos+1;
end;
cantidad:=cantidad+1;
end;
end;

end.

ecfisa
26-08-2014, 01:00:03
Ahora tengo otra duda con el mismo trabajo. Resulta que el profesor nos hizo crear la cola mandandole el nombre del archivo, de la siguiente forma:
CrearCola(var Cola: TipoCola;Nombre: string);
De ser así, en cada proceso dentro de la librería, se tiene que poner el nombre¿? Porque ahora lo estoy necesitando y nose si se puede, o como hacerlo.. Como hago para entrar al GrupoA, o al GrupoD¿?
Hola Valee.

Una opción es:

unit LibCola

interface

...

type
TipoPosicion= longint;
...

procedure CrearCola (var Cola: TipoCola; aFileName:string);

...

implementation

var
gFileName: string; // variable global a la unidad

procedure CrearCola (var Cola: TipoCola; aFileName:string);
begin
gFileName:= aFileName;
...

A partir de la asignación, todas las implementaciones de funciones y procedimientos de la unidad podrán acceder a gFileName y no tendrás necesidad de enviarles el nombre de archivo como argumento a cada una (que creo es lo que querías evitar).

Saludos :)

matias.blanco
26-08-2014, 03:54:17
Hola Valee!

Creo que va a ser mejor si podes subir el proyecto como ya lo hiciste.
Vamos a poder ayudarte mejor si lo haces.


Saludos.

Matias.