Pascal/Turbo Pascal - modificar algoritmo sencillo

 
Vista:

modificar algoritmo sencillo

Publicado por Leandro (1 intervención) el 03/10/2008 02:35:54
Hola que tal? necesito ayuda con el siguiente codigo que genera palabras al azar de 5 letras si que se repitan. Necesito modificarlo para que pueda generar palabras con la posibilidad de repetir letras.

CONST
PRIMERA_LETRA = 'A';
ULTIMA_LETRA = 'Z';
LARGO_CODIGO = 5;
CANTIDAD_LETRAS = ord(ULTIMA_LETRA)-ord(PRIMERA_LETRA)+1 ;

TYPE
TLetra = PRIMERA_LETRA..ULTIMA_LETRA;
(* estructura donde se guarda un c¢digo *)
TCodigo = array [1..LARGO_CODIGO] of TLetra;

VAR
i,lugar: integer;
car: TLetra;
letras: array [1..CANTIDAD_LETRAS] of TLetra;
codigo: TCodigo;
letra: char;
begin
{ se inicia el sorteo }
randomize;
(* ubico todas las letras en orden *)
i:= 1;
for car:= PRIMERA_LETRA to ULTIMA_LETRA do
begin
letras[i]:= car;
i:= i+1;
end;

(* Este for realiza LARGO_CODIGO sorteos, uno por cada letra del c¢digo.
* la letra sorteada, se "elimina" de manera de evitar las repeticiones *)
for i:= CANTIDAD_LETRAS downto (CANTIDAD_LETRAS-LARGO_CODIGO+1) do
begin
(* sorteo considerando hasta la i-esima letra *)
lugar:= 1+random(i);
(* mando la letra ya sorteada para el final
* para que no entre para el pr¢ximo sorteo *)
car:= letras[i];
letras[i]:= letras[lugar];
letras[lugar]:= car;
(* paso la letra sorteada para el c¢digo *)
codigo[cantidad_letras-i+1]:= letras[i]

end;
write (codigo);
end.

se que no es necesario el arreglo "letras", Para sortear una letra en el rango TLetra se puede usar esta fórmula: letra:= chr(ord(PRIMERA_LETRA) + random(CANTIDAD_LETRAS)) pero no logro darme cuenta como utilizarlo. Cualquier ayuda seria de mucha utilidad. Desde ya muchas gracias.
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