1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.
  2. Anuncie Aqui
    Anuncie aqui você Também: fdantas@4each.com.br

Classificar dados de uma variavel extent

Discussão em 'Progress 4GL' iniciado por antonioc, Agosto 16, 2012.

  1. antonioc

    antonioc Membro Participativo

    Boa tarde.

    Tenho uma variavel:

    def var v-campo as int extent 10.

    assign v-campo[1] = 1
    v-campo[2] = 9
    v-campo[3] = 5
    v-campo[4] = 10
    v-campo[5] = 2
    v-campo[6] = 7
    v-campo[7] = 6
    v-campo[8] = 9
    v-campo[9] = 3
    v-campo[10] = 4.

    Quero rodar uma rotina ou função e quero que a minha variavel fique preenchida assim:

    assign v-campo[1] = 1
    v-campo[2] = 2
    v-campo[3] = 3
    v-campo[4] = 4
    v-campo[5] = 5
    v-campo[6] = 6
    v-campo[7] = 7
    v-campo[8] = 8
    v-campo[9] = 9
    v-campo[10] = 10.


    Existe alguma função para isto? Eu montei uma lógica simples, ficou boa para uns 3000 itens mas quando falamos em 60000 ai complica um pouco,. Se alguém puder dar alguma sugestão eu agradeço.


    Antonio
  2. alexandretm

    alexandretm Membro Participativo

    amigo detalha mais sua necessidade.
  3. alexandretm

    alexandretm Membro Participativo

    Melhor aind apoe sua logica ai , para ver se posso te ajudar
  4. antonioc

    antonioc Membro Participativo

    Eu só quero classificar os números em ordem crescente.
  5. eriutoncharles

    eriutoncharles Membro Participativo

    Olá, bom dia !!

    Meu caro, exitem vários métodos de ordenação de vetores, um dos mais fáceis e eficientes é o método Bolha.

    Estou lhe dando dois exemplos de ordenação, para você testar ai com muitos registros e ver quais deles é mais robusto em relação a velocidade de processamento.

    Código:
    def var v-campo as int extent 10.
    DEF VAR v-temp AS INT.
    DEF VAR i AS INT.
    DEF VAR j AS INT.
    
    assign v-campo[1] = 1
    v-campo[2] = 9
    v-campo[3] = 5
    v-campo[4] = 10
    v-campo[5] = 2
    v-campo[6] = 7
    v-campo[7] = 6
    v-campo[8] = 9
    v-campo[9] = 3
    v-campo[10] = 4.
    
    
    /* resolvendo por método de ordenação Bolha */
    DO  i = 1 TO 10.
        
        DO j = 1 TO 10.
           IF v-campo[i] < v-campo[j] THEN DO:
                ASSIGN v-temp = v-campo[i]
                       v-campo[i] = v-campo[j]
                       v-campo[j] = v-temp.
                
           END.
        END.
    END.
    
    
    OUTPUT TO C:\vetor.txt.
    
    DO i = 1 TO 10.
        PUT "Metodo 1 " i v-campo[i] SKIP.
    END.
    OUTPUT CLOSE.
    
    
    Código:
    
    def var v-campo as int extent 10.
    DEF VAR i AS INT.
    
    DEF TEMP-TABLE tt-vetor 
        FIELD valor AS INT.
    
    
    assign v-campo[1] = 1
    v-campo[2] = 9
    v-campo[3] = 5
    v-campo[4] = 10
    v-campo[5] = 2
    v-campo[6] = 7
    v-campo[7] = 6
    v-campo[8] = 9
    v-campo[9] = 3
    v-campo[10] = 4.
    
    
    
    OUTPUT TO C:\vetor.txt.
    
    /* resolvendo por tt  */
    
    DO i = 1 TO 10.
        CREATE tt-vetor.
        ASSIGN tt-vetor.valor = v-campo[i].
    END.
    
    
    ASSIGN i = 1.
    FOR EACH tt-vetor BREAK BY tt-vetor.valor.
       v-campo[i] = tt-vetor.valor.
        ASSIGN i = i + 1.
    END.
    
    
    DO i = 1 TO 10.
        PUT "Metodo 2"  i v-campo[i] SKIP.
    END.
    OUTPUT CLOSE.
    
    Espero ter Ajudado!!
  6. antonioc

    antonioc Membro Participativo

    Obrigado.


    Antonio

Compartilhe esta Página