Ir para conteúdo
Fórum Script Brasil
  • 0

IF - Quantidade de cédulas para pagamento


jamiel

Pergunta

Uma empresa precisa fazer o pagamento de seus funcionários, faça um programa para determinar a menor quantidade de cédulas necessárias para o pagamento de um funcionário, supondo que o líquido nunca tenha centavos.

O formulário:


<form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">

   <label id="lista02">Valor</label>
   <input type="number" name="sal" /> <br>


<p>
   <input type="submit" value="Calcular" name="calcular">
</p>

</form>

<hr>

 

Primeira tentativa:

<?php

$sal = $_POST['sal'];
$resto = $sal;
     if ($resto > 100) {
           
          echo "N&uacute;mero de notas de 100 : ". $n100 = $resto / 100;
          echo  " | R$".($n100 = $resto / 100)*100;
          echo "<br>";
          $resto = $resto % 100;

       }
?>

O grande problema: Ex: Se digito 400, ele retorna 4 cédulas; se digito 430, ele retorna 4.3 cédulas. Também, não passa para o if seguinte. if 50, if 20 ...etc. Pensei que deveria declarar o tipo, visto que a divisão " $n100 = $resto / 100 " retorna não inteiro.

Fiz o seguinte:

  if ($resto > 100) {
           
          echo "N&uacute;mero de notas de 100 : ". (int)$n100 = $resto / 100;
          echo  " | R$".((int)$n100 = $resto / 100)*100;
          echo "<br>";
          (real)$resto = $resto % 100;

       } 

Ele até retorna inteiro (Digito 430 e ele retorna 4 | R$400.). Mas, não sei o que acontece com o valor "$resto % 100" e muito menos passa para o próximo if.

 

Agradeço desde já qualquer ajuda ... 

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Olá!

Segue sugestão de solução:

                <form method="post">
                    <h2>Informe Valor do Salário:</h2>
                    <input type="number" name='salario' step='1' autofocus><br>
                    <br><input type="submit" value='Distribuir'>
                </form>
                <?php
                if (isset($_POST['salario'])) {
                    // defina um array com cédulas disponíveis em ordem decrescente:
                    $notas = [100, 50, 20, 10, 5, 2];
                    // guarda o valor do salário
                    $valor = $_POST['salario'];
                    $display = null;  // inicia a variável $display
                    // efetua rotina para cada nota existente
                    foreach ($notas as $v) {
                        // inicia a variável $cedulas
                        $cedulas[$v] = null;
                        // enquanto o $valor for maior ou igual ao valor da nota atual
                        while ($valor >= $v) {
                            // acrecescenta a $nota(de 100, de 50... ou de 2 reais) à variavel $cedulas
                            $cedulas[$v]+=1;
                            // subtrai $nota da variável $valor
                            $valor-=$v;
                        }
                        // Prepara a exibição do resultado:
                        // cria uma linha de texto para cada quantidade de cédulas
                        $display .= $cedulas[$v] ? "<p>$cedulas[$v] * R$ $v,00</p>" : null;
                    }
                    // define mensagem de erro:
                    $msg = '<p class="error">Valor não pode ser distribuído nas notas disponíveis.<br>Faltaria R$ ' . $valor . ',00<br>Tente outro valor.</p>';
                    if ($valor == 0) {
                        $msg = '<p class="ok">Valor OK! Distribuir: R$ ' . (int) $_POST['salario'] . ',00</p>' . $display;
                    }
                    echo $msg;
                }

Editado por lowys
corrigir concordância: plural e singular
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...