Cálculo Mínimo Múltiplo Comum (MMC)

Discussão em 'Progress 4GL' iniciado por lima, Fevereiro 5, 2013.

  1. lima

    lima Membro Participativo

    Bom dia pessoal,

    Existe alguma função progress para o cálculo do mínimo múltiplo comum?

    Agluém já precisou fazer este cálculo?

    Abraços.
  2. af.dums

    af.dums Membro Ativo

    Cara, pronta eu desconheço, mas uma vez eu fiz uma, segue abaixo, vê se ajuda, ele faz o MMC de 3 números, caso você queira sempre comparar entre uma quantidade fixa de números é só ajustar o número de variaveis, se sua comparação for entre quantidade de números diferentes precisaria um ajuste maior.

    Código:
    def var i-1 as integer no-undo.
    def var i-3 as integer no-undo.
    def var i-2 as integer no-undo.
    
    def var i-cont as integer no-undo.
    
    update i-1 column-label "Valor 1"
           i-2 column-label "Valor 2"
           i-3 column-label "Valor 3".
    
    if i-1 = 0 then
       assign i-1 = 1.
       
    if i-2 = 0 then
       assign i-2 = 1.
       
    if i-3 = 0 then
       assign i-3 = 1.
       
    assign i-cont = 2.   
       
    repeat:
    
        disp i-cont column-label "Divisor"
             (i-1 mod i-cont) column-label "Resto 1"
             (i-2 mod i-cont) column-label "Resto 2"
             (i-3 mod i-cont) column-label "Resto 3".
             
        pause 0.         
    
        if (i-1 mod i-cont) = 0 and (i-2 mod i-cont) = 0 and (i-3 mod i-cont) = 0 then
            leave.
            
        if i-cont >= i-1 or i-cont >= i-2 or i-cont >= i-3 then do:
            assign i-cont = ?.
            leave.
        end.
        
        assign i-cont = i-cont + 1.
    
    end.
    
    if i-cont = ? then
        message "Sem MMC" view-as alert-box.
    else    
        message "MMC: " i-cont view-as alert-box.
    
    Dúvidas a disposição.

    Abraços.
  3. af.dums

    af.dums Membro Ativo

    Apenas uma ressalva, a lógica parte do divisor 2, visto que 1 é MMC de qualquer número.
  4. lima

    lima Membro Participativo

    Obrigado pela ajuda.

    mas não funciona a sua lógica...

    Por exemplo, preciso do mmc dos números 12,18,24. o MMC correto é 72 e a sua lógica não retorna este valor.

    Obrigado.
  5. af.dums

    af.dums Membro Ativo

    Olá, confundi, no caso eu precisava buscar o menor divisor entre os números... Vou ver se consigo alguma coisa aqui.

    Abraços...
  6. af.dums

    af.dums Membro Ativo

    Código:
    def var i-1 as integer no-undo.
    def var i-2 as integer no-undo.
    
    def var i-cont as integer no-undo.
    
    update i-1 column-label "Valor 1"
           i-2 column-label "Valor 2".
    
    assign i-cont = if i-1 > i-2 then i-1 else i-2.
    
    repeat:
    
        disp i-cont column-label "Multiplicador"
             (i-cont mod i-1) column-label "Resto 1"
             (i-cont mod i-2) column-label "Resto 2".
             
        pause 0.         
    
        if (i-cont mod i-1) = 0 and (i-cont mod i-2) = 0 then
            leave.
                
        assign i-cont = i-cont + 1.
    
    end.
    
    if i-cont = ? then
        message "Sem MMC" view-as alert-box.
    else    
        message "MMC: " i-cont view-as alert-box.
    

Compartilhe esta Página