Pascal/Turbo Pascal - ¿Como ordeno un vector???

 
Vista:

¿Como ordeno un vector???

Publicado por LOLO (2 intervenciones) el 30/04/2005 13:27:27
Tengo que ordenar una baraja de cartas.
he definido un registro para las cartas que tienen 2 campos el numero i el palo.
entonces tengo que ordenar un vector de tipo baraja, de menor mayor siendo : oros<copas<bastos<espadas he probado muchas cosas pero es que no hay manera... aver si alguien m puede echar un kable
graciass
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:¿Como ordeno un vector???

Publicado por Pascual (94 intervenciones) el 02/05/2005 23:05:24
Yo creo que tienes que recorrer el array desde el principio hasta el final con un FOR y dentro del for meter un IF que diga si es de oros entonces ordenamos si no es de oros no hacemos nada, después que recorra otra vez el bucle con un FOR y dentro un IF que haga lo mismo pero con otro palo y así hasta que hayas ordenado con todos los palos, seguro que hay una forma mejor de hacerlo pero esta es la que se me ocurre.
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:¿Como ordeno un vector???

Publicado por Diego Romero (786 intervenciones) el 09/05/2005 09:36:47
Te sonará curioso pero no necesitas ningún método de ordenación (salvo que explícitamente te lo pidan, claro). Debido a que ya sabes el orden de las cartas y estas están predefinidas lo único que tienes que hacer es regererar el vector con un procedimiento estático.
Digamos que tu registro base es así:
type
TPalo=(Oro, Copa, Basto, Espada);

TCarta=record
Palo:TPalo;
Valor:Byte;
end;
TMazo=Array [1..48] of TCarta;
var
Mazo: TMazo;

Entonces el procedimiento de "ordenación" es el mismo que el que usarías para "llenar" el mazo, algo así:

procedure Llenar(M: TMazo);
var
AuxValor, I:Byte;
AuxPalo: TPalo;

begin
I:=1;
for AuxPalo:=Oro to Espada do
begin
for AuxValor:=1 to 12 do
begin
M[i].Palo:=AuxPalo;
M[i].AuxValor;
inc(i);
end;
end;
end;
Al final de ese procedimiento tendrás el mazo ordenado ¿cierto? :).
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:¿Como ordeno un vector??? (corrección)

Publicado por Diego Romero (786 intervenciones) el 09/05/2005 09:38:21
Cometí un error de tipeo, donde dice:
M[i].AuxValor;
Debe decir:
M[i].Valor:=AuxValor;
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