[ Foro de Pascal ]
Hola buenas, estoy aprendiendo a programar a traves de un curso, pero estoy estancado en este ejercicio que trata de hacer el truco de las 21 cartas que es un algoritmo, tengo mi codigo, puedo generar el deck usando chr(random) , separo los grupos, pero no puedo despues ordenar el grupo seleccionado para que quede en medio y despues repartir las cartas de 1 en 1 para cada grupo, este es mi codigo, si alguien me puede ayudar, guiar se lo agradeceria mucho :)
program Trucocartas;
const
MAX_TARJETAS_GRUPO = 7;
MAX_GRUPOS = 3;
MAX_TARJETAS = MAX_TARJETAS_GRUPO * MAX_GRUPOS;
MIN_TARJETA_VALOR = 'A';
MAX_TARJETA_VALOR = Chr(MAX_TARJETAS + Ord('A') - 1);
type
tarjetas = MIN_TARJETA_VALOR..MAX_TARJETA_VALOR;
grupo = array[1..MAX_TARJETAS_GRUPO] of tarjetas;
mazo = array[1..MAX_TARJETAS] of tarjetas;
var
grupo1, grupo2, grupo3: grupo;
deck: mazo;
i, j,x,a,d: Integer;
carta: tarjetas;
opcion: integer;
begin
Randomize;
writeln('Hola, soy un mago especialista en letras, adivinare la letra en la que estas pensando.');
writeln('Haremos 3 secuencias. Empecemos...');
writeln('Secuencia 1 :');
// Llenar el mazo con todas las tarjetas posibles
for i := 1 to MAX_TARJETAS do
deck[i] := Chr(Ord('A') + i - 1);
// Barajar el mazo
for i := 1 to MAX_TARJETAS do begin
j := Random(MAX_TARJETAS) + 1;
carta := deck[i];
deck[i] := deck[j];
deck[j] := carta;
end;
// Distribuir las tarjetas en grupos sin repeticiones
for i := 1 to MAX_TARJETAS_GRUPO do
begin
grupo1[i] := deck[i];
grupo2[i] := deck[i + MAX_TARJETAS_GRUPO];
grupo3[i] := deck[i + 2 * MAX_TARJETAS_GRUPO];
end;
writeln;
// Mostrar los grupos
for i := 1 to MAX_TARJETAS_GRUPO do
writeln(' ',grupo1[i], ' ',grupo2[i], ' ',grupo3[i]);
writeln;
for x:=1 to MAX_GRUPOS do begin
write('¿En que columna se encuentra tu letra? (1-2-3):');
readln(opcion);
case opcion of
1:
begin //GRUPO 1
for i:=1 to 7 do
grupo1[i]:=deck[i];
for i := 1 to 7 do
Deck[i] := Deck[i + 14];
for i := 1 to 7 do
Deck[i + 7] := grupo1[i];
for i:=1 to MAX_TARJETAS_GRUPO do begin
writeln(' ',grupo1[i], ' ',grupo2[i], ' ',grupo3[i]);
writeln;
end;
end;
2:
begin // GRUPO 2
for i:=1 to 7 do
grupo2[i]:=deck[i];
for i := 1 to 7 do
Deck[i] := Deck[i + 14];
for i := 1 to 7 do
Deck[i + 7] := grupo2[i];
FOR I:=1 TO MAX_TARJETAS_GRUPO do BEGIN
deck[i]:=[i];
writeln(' ',grupo1[i], ' ',grupo2[i], ' ',grupo3[i]);
writeln;
end;
end;
3:
begin //GRUPO 3
for i:=1 to 7 do
grupo2[i]:=deck[i];
for i := 1 to 7 do
Deck[i] := Deck[i + 14];
for i := 1 to 7 do
Deck[i + 7] := grupo2[i];
for i:=1 to MAX_TARJETAS_GRUPO do begin
writeln(' ',grupo1[i], ' ',grupo2[i], ' ',grupo3[i]);
writeln;
end;
end;
else begin
writeln('ERROR: Debes escoger entre 1-2-3');
writeln('¿En que columna se encuentra tu letra? (1-2-3):');
readln(opcion);
end;
end;
end;
WRITELN('Tu Letra es la:', deck[11]);
readln;
end.
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)