Pascal/Turbo Pascal - procedimiento baraja

 
Vista:

procedimiento baraja

Publicado por jose (7 intervenciones) el 16/07/2007 17:24:07
ola este es mi codigo para un procedimiento k se engarque de barajear una matriz en la que en sus columnas almacena los palos de las cartas oros,bastos,espadas,copas y en sus filas los jugadores con las cartas.el procedimiento compila bien pero el resultado no es satisfactorio a ver si me podriais ayudar a encontrar algun fallo.Gracias

procedure Repartir ( ordenadas:mazito; N:integer);

type
aux=array[1..2] of string;
var
i,j,aleat:integer;

auxiliar1:aux;
aux2:string;

begin
Randomize;

for j:=1 to 4 do
writeln('entro j');
for i:=1 to N do
Writeln('entro i');
begin
aleat:=Random(N)+1;
aux2:=ordenadas[i,j];
ordenadas[i,j]:=ordenadas[aleat,j];
ordenadas[aleat,j]:=aux2;
end;
end;
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:procedimiento baraja

Publicado por Diego Romero (996 intervenciones) el 16/07/2007 18:22:07
Los ciclos for solo ejecutan los WriteLn() pero no lo que está a continuación porque no está encerrado en bloques begin.. end;

Pero aunque lo estuviera, tal como está el código, es posible que se reparta la misma carta dos veces (o más) al mismo jugador o a jugadores distintos.
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:procedimiento baraja

Publicado por jose (7 intervenciones) el 16/07/2007 19:04:09
oki gracias se supone k este procedimiento de antes lo que hace es cambiar las cartas de la columna un numero aleatorio de veces.en la matriz la fila son los jugadores y las columnas seran 4 correspondientes a las cuatro cartas k tendra en un principio los jugadores.

matrizinicial= as de palos as de bastos as de copas as de oros
dos de palos dos de bastos dos de copas dos de oros ..etc

si me pudieses echar una mano a arreglar ese problema k tengo para evitar repartir dos veces la misma carta.... GRacias
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:procedimiento baraja

Publicado por Diego Romero (996 intervenciones) el 17/07/2007 02:41:50
Simple, agrega un campo más al tipo "carta" que sea de tipo boolean y que si vale true esa carta está repartida. No sé, algo así:

type
TPalo=(oro, copa, espada, basto);
TCarta=record
Palo: TPalo;
Numero: byte;
Repartida: boolean;
end;

TBaraja=Array[1..N] of TCarta;
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:procedimiento baraja

Publicado por jose (7 intervenciones) el 17/07/2007 11:04:14
muchas gracias ya he puesto ese registro en el campo para que cuando realize un cambio de carta se ponga a true el valor repartido.
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:procedimiento baraja

Publicado por jose (7 intervenciones) el 17/07/2007 11:08:26
Otro problemilla que tengo a ver si mi idea es buena tengo una matriz en la k kiero pasar los datos de las columnas de la siguiente manera: lo que contiene la posicion primera ,a la segunda,la segunda a la tercera,la tercera a la cuarta asi hasta la ultima y despues la ultima a la primera.
mi idea era guardar en auxiliar la ultima posicion; y con un bucle for recorrer las posiciones desde i hasta la ultima posicion cambiando la posicion N-i por la de N
GRACIAS DE ANTEMANO
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