Combinações Diferentes

Discussão em 'Progress 4GL' iniciado por deproenca, Setembro 23, 2010.

  1. deproenca

    deproenca Membro Participativo

    Bom dia galera!

    Estou com um probleminha bacana....hehe

    Quero fazer um programa da seguinte maneira: Eu tenho um que gerar um arquivo com combinações diferentes. Um campo com 3 posições, podendo ter letras e números.

    Ex.:
    AB1
    CD2
    DF3
    HG9
    AC1
    AD2

    sendo que esses números não podem se repetir. Tenho que gerar cerca de 4.000 combinações.
    Alguém tem idéia de como devo fazer?

    Abraços
  2. Rogerio

    Rogerio Moderator Moderador Equipe de Suporte

    Eu acho que a melhor maneira seria voce criar uma temp-table, e a cada geração verificar se o codigo já existe na temp-table.
  3. deproenca

    deproenca Membro Participativo

    Olá Rogério,
    eu também pensei em armazenar em temp-table... porém a minha dúvida ta mais na geração, como fazer para concatenar essa variação de código?
  4. LeandroSantos

    LeandroSantos Membro Participativo

    Fiz o teste aqui q funcionou, veja se ajuda.
    Código:
    def var loop    as int.
    def var vtemp   as char.
    
    def temp-table tt-codigos
       field codigo as char format "x(3)"
       index idx-codigo is unique codigo.
    def buffer bff-codigos for tt-codigos.
    
    
    do loop = 1 to 4000.
    
        repeat.
            vtemp = chr(random(65,90)) + chr(random(65,90)) + string(random(0,9)).
            if can-find( first bff-codigos no-lock where bff-codigos.codigo = vtemp ) then 
                next.
            create tt-codigos.
            tt-codigos.codigo = vtemp.
            leave.
        end.
        
    end.
    
    for each tt-codigos.
        disp 
            tt-codigos
            with frame mostra down.
        down with frame mostra.
    end.
    
  5. deproenca

    deproenca Membro Participativo

    Amigo o código funcionou, porém ele pula algumas combinações:
    Ex:
    AA0
    AA1
    AA5
    AA9
    AB0
    AB2
    AB5
    AB6
    AB7

    Como faço para ele pegar
    AA0
    AA1
    AA2
    AA3
    AA4
    AA5
    AA6
    AA7
    AA8
    AA9
    AB0
    AB1
    AB2
    ...
  6. eduardo.leite

    eduardo.leite Equipe de Suporte Moderador Equipe de Suporte

    caro colega,

    Acredito ser isto que precise...

    Código:
    def var c-caracter      as character    init "a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,1,2,3,4,5,6,7,8,9,0" no-undo.
    
    def var i1              as integer      no-undo.
    def var i2              as integer      no-undo.
    def var i3              as integer      no-undo.
    
    def var c-comb          as character    no-undo.
    
    output to c:\temp\combinacoes.txt no-convert page-size 0.
    
    do i1 = 1 to num-entries(c-caracter):
    
        process events.
    
        do i2 = 1 to num-entries(c-caracter):
    
            do i3 = 1 to num-entries(c-caracter):
    
                assign c-comb = entry(i1,c-caracter) +
                                entry(i2,c-caracter) +
                                entry(i3,c-caracter).
    
                put unformatted 
                    c-comb skip.
    
            end.
    
        end.
    
    end.
    
    output close.
    
    os-command silent value("c:\temp\combinacoes.txt").
    

Compartilhe esta Página