Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 09-07-2004
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino
Esto si es un reto

Hola amigos, espero que podais ayudarme, vereis, tengo un array que va desde 0 hasta z. En lo que estoy trabajando en un código que me de todas las combinaciones posibles de los elementos de array, osea que cuente de 0 hasta zzzzzzzzzzzzz.

Me podeis ayudar??
Responder Con Cita
  #2  
Antiguo 09-07-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Cita:
Empezado por perrogrun
osea que cuente de 0 hasta zzzzzzzzzzzzz.
pues un for de 0 to z ja ja ja
Responder Con Cita
  #3  
Antiguo 09-07-2004
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino
Talking

je je je o mejor un while del 0 al zzzzzzz...
Responder Con Cita
  #4  
Antiguo 09-07-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
... como no te expliques mejor.....

Código Delphi [-]
var sueño :char;
begin
for sueño := 'a' to 'z' do
  ups  que sueeeeeeeño
Responder Con Cita
  #5  
Antiguo 09-07-2004
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino
Haber si me explico.

Tengo un array con los siguiente valores:
0 1 2 3 4 5 6 7 8 9 - _ a b c d e f g h i ... z

ok? son 39 valores en total los que tiene el array. La cuestión es hacer un código para que por ejemplo meta en un memo todas las combinaciones posibles entre los valores del array, y como se consiguen todos las combinaciones posibles? Pues empezando por 0 y terminando en zzzzzzzzzzz...zz (39 zetas). Si el array tuviese sólo del 0 al 9 el resultado sería obvio, empezaría en 0 y terminaría en 9999999999.

Espero haberme explicado
Responder Con Cita
  #6  
Antiguo 09-07-2004
Avatar de tcp_ip_es
tcp_ip_es tcp_ip_es is offline
No confirmado
 
Registrado: ago 2003
Ubicación: Madrid
Posts: 635
Poder: 0
tcp_ip_es Va por buen camino
Fácil: Factorial del array


Se que no es eso pero es por el cachondeo del viernesssssssssssss, por fin es viernes.........................................siiiiiiiiiiiiiiiii
Responder Con Cita
  #7  
Antiguo 09-07-2004
perrogrun perrogrun is offline
Miembro
 
Registrado: ene 2004
Ubicación: Fuengirola
Posts: 41
Poder: 0
perrogrun Va por buen camino


Melospliquenn??
Responder Con Cita
  #8  
Antiguo 09-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
esto suena a problema de clase de programación jejeje.

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
const a ='abcdef';
var s:string;
    procedure Rec(p:integer);
    var i:integer;
    begin
      for i:=2 to length(a) do
      begin
          s[p]:=a[i];
          memo1.lines.add(s);
      end;
      if pthen Rec(p+1);
    end;
begin
  s:='aaa';
  memo1.lines.add(s);
  rec(1);
end;
Responder Con Cita
  #9  
Antiguo 09-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
mas compacto aun:
Código Delphi [-]
procedure TForm1.Button2Click(Sender: TObject);
const a ='abcdef';
var s:string;
    procedure rec (i,j:integer);
    begin
          s[i]:=a[j];
          memo1.lines.add(s);
          if i<=length(s) then
             if j=length(a) then rec (i+1,2)
             else rec (i,j+1);
    end;
begin
  s:='aaa';
  rec(1,1);
end;
Responder Con Cita
  #10  
Antiguo 09-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
mmmm alguien recuerda los viejos punteros?

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var p,g:PAnsiChar;
    s,a:string;
begin
  s:='aaa';
  a:='abcdef';
  p:=@s[1];
repeat
      g:=@a[1];
      repeat
            Memo1.Lines.add(s);
            p^:=(g+1)^;
            inc(g)
      until g=a[Length(a)];
      inc(p);
until (p>@s[Length(s)]);
end;
se nota que me aburro
Responder Con Cita
  #11  
Antiguo 09-07-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola ruina.

Me parece que el algoritmo propuesto no da realmente todas las combinaciones... he hecho de manera rápida una función que, valiendose de la recursividad, promete dar todas las combinaciones posibles de un array de caracteres, en un string de una longitud determinada.

Código Delphi [-]
Procedure CombinaArray(cars : Array of char; longitud : Integer; resultado : TStrings);

  Procedure Combinacion(const prefijo : String; NivelesPendientes : Integer);

  Var
    i : Integer;
    res : String;

  Begin
    for i := low(cars) to high(cars) do
    begin
      res := prefijo + Cars[i];
      if NivelesPendientes > 0 Then
        Combinacion(res, NivelesPendientes - 1)
      else
        resultado.Add(res);
    end;
  end;

begin
  combinacion('', longitud - 1);
end;

La forma de uso sería algo como:

Código Delphi [-]
  Memo1.Lines.Clear;
  memo1.Lines.BeginUpdate;
  CombinaArray(['a', 'b', 'c', 'd', 'e', 'f'], 5, memo1.Lines);
  Memo1.Lines.EndUpdate;

Hasta luego.

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:35:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi