Pascal/Turbo Pascal - ayuda con programa de convinaciones

 
Vista:

ayuda con programa de convinaciones

Publicado por L_B (17 intervenciones) el 06/10/2004 20:08:26
Disculpen no s e si me explique bien pero lo que quiero es realiar un programa en pascal
que el usuario introdusca por ejemplo a,b,c,d, y el programa me escriba la s combinacione s posibles que s e pueden hacer con esas letras por ej:

abcd
cdba
bcda

etc

espero que me puedan ayudar ya qu e yo no tengo ni idea de como empesarlo a programar
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:ayuda con programa de convinaciones

Publicado por ivan (37 intervenciones) el 09/10/2004 05:05:43
Hola L_B: Lo podes hacer de varias maneras, en realidad se me ocurren dos :D, pero seguramente deben haber mas. Te cuento, la primera es hacer bucles anidados y la otra, que es la mas intuitiva, es hacerlo recursivamente. En el primer caso haces bucles anidados, donde cada bucle se encargaria de variar un caracter, el problema es que esto sirve para un string de una determinada longitud. Mientras mas caracteres tenga el string mas bucles vas a tener que hacer :S, para abarcar todos los caracteres. La segunda opcion es la mejor, pues no importa la longitud del string, aca te paso el codigo:
procedure combinar(var cad: string);
var cadcopia: string;
largocad: byte;
procedure combinarahora(inicio: byte);
var i: byte;
begin
for i:= 1 to largocad do
begin
cadcopia[inicio]:= cad[i];
if inicio <> largocad then
combinarahora(inicio + 1) { llamada recursiva ]
else write(cadcopia, '-');
end;
end;
begin
cadcopia:= cad;
largocad:= length(cad);
combinarahora(1);
end;
Fijate que toma una variable por referencia, la idea de hacer dos procedimientos es para no "saturar" tanto la pila, de esta manera se declara "largocad" fuera del procedimiento recursivo y no en su interior. Cualquier cosita maileame :D, suerte L_B y espero que te sirva, Adios.
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:ayuda con programa de convinaciones

Publicado por L_B (17 intervenciones) el 11/10/2004 04:01:25
Claro que me sirve y gracias por tu ayuda
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:ayuda con programa de convinaciones

Publicado por Javier (1 intervención) el 11/10/2004 21:13:43
Hay una forma muy sencilla que es, como dijo Iván, recursivamente pero de manera más sencilla.

procedure combinaciones (cadena : string);
var
i : integer;
begin
if length (palabra) = longitud_deseada then
writeln (palabra)
else
for i := 1 to num_letras do
combinaciones (cadena + letras[i]);
end;
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