diferença de numeros

Discussão em 'Progress 4GL' iniciado por ueluis, Junho 28, 2012.

  1. ueluis

    ueluis Membro Participativo

    galera,

    minha dúvida é gigante.

    preciso fazer a seguinte conta:

    tenho uma qtde X e tenho que saber quantas unidades de saco de 25 kg eu terei que formular.

    teoricamente parece fácil mais na prática para mim está sendo difícil, pois quando tenho valor quebrado tenho que informar separadamente a qtde.

    no excel criei a lógica assim:
    quant-sacogeral = qtdex / 25 = 1.6
    quant-sacoint = int(qtdex / 25) = 1
    dif = quant-sacogeral - quant-sacoint = 0.6
    total sc = quant-sacoint + se(dif <>0) então 1 senao 0.

    total de sacos é: 2
    1 saco com 25 kg + 1 saco com 15.

    como faço este procedimento no progress?
  2. baltazar

    baltazar Membro Participativo

    Já tem ai o cálculo todo, é só adaptar para o Progress.
  3. ueluis

    ueluis Membro Participativo

    o Problema é o seguinte:

    quando calculo numeros onde o resto é maior que cinco ele arredonda para mais e ai a conta dá errado.

    abaixo está o exemplo do código com o erro.
    Código:
    def var qtdex             as DEC INIT 40.
    def var quant-sacogeral   as DEC.
    def var quant-sacoint     as int.
    def var dif               as DEC.
    def var totalsc           as int.
    
    
    quant-sacogeral = qtdex / 25.
    quant-sacoint = int(qtdex / 25).
    dif = quant-sacogeral - quant-sacoint.
    totalsc = quant-sacoint + IF(dif <> 0) THEN 1 ELSE 0.
                                                      
    
              DISP
                  qtdex          /*40*/
                  quant-sacogeral  /*1,6*/
                  quant-sacoint    /*2 */
                  dif          /*-0,40  errado*/
                  totalsc     /*3 o correto seria :
                                           1 saco com 25 kg e outro com 15 kg*/
                 .
    
    
    se puderem me ajudar a solucionar o problema eu agradeço.
  4. ueluis

    ueluis Membro Participativo


    depois de aliviar o stress achei o problema.
    eu estava fazendo errado a condição correta é:
    Código:
    totalsc = quant-sacoint + IF dif <= 0 THEN 0 ELSE 1.
    
    
    vlw a todos novamente.
  5. eriutoncharles

    eriutoncharles Membro Participativo

    Boa Tarde!

    Seus problemas acabaram.... rs rs rs

    Teste assim: Comandos MOD e TRUNC(parametros 0 é truncar para nenhuma casa decimal... se quiser truncar para uma.. duas,.. é só alterar o valor), tb existe o Comando ROUND que Arredonda.. tb usando a após a vírgula o parâmetro de qtd de casas que quer arredondar..

    Você iria usar estes dois comandos?

    ASSIGN dif = qtdex MOD 25.
    INT(TRUNC((qtdex / 25),0)).

    Vou fazer o programinha... jajá posto aqui!
  6. eriutoncharles

    eriutoncharles Membro Participativo

    Que bom então que funcionou!

    Mas como tinha prometido, olha ai usando os comandos que eu falei anteriormente.

    Código:
    def var qtdex     as DEC INIT 40.
    def var totalsc           as int.
    totalsc = TRUNC((qtdex / 25),0) + ( IF qtdex MOD 25 > 0 THEN 1 ELSE 0).        
            
     MESSAGE totalsc  VIEW-AS ALERT-BOX.
    
    Abraços ,

    Eriuton Charles

Compartilhe esta Página