Jump to content
huntressDc

Ajuda com atividade Javascript - Calcular troco e exibir notas disponíveis

Recommended Posts

Estou com uma atividade de aula para fazer e gostaria de uma ajuda, devo receber do usuário o valor da compra e o valor pago, e então exibir o troco. Até aí ok, só que também pede para exibir numa textarea as notas utilizadas no troco, informando sempre o mínimo de notas possíveis, exemplo:

 

 

vlrCompra = 53,00
vlrPago = 100,00
vlrTroco = 47,00 

notasTroco = 
4 notas de 10,00
1 nota   de  5,00
2 notas  de  1,00

 

Não sei como fazer essa última parte, alguém para me ajudar? AS NOTAS QUE EU TENHO DISPONIVEIS SAO 1, 5, 10, 50

Eis o que fiz até agora:

 

function calculaTroco(){
    
    var valorCompra = parseFloat($("#valorCompra").val());
    var valorPago = parseFloat($("#valorPago").val());
    var valorTroco = 0;
    
    if (validarCampos() && validarNan()){
        if (valorPago == valorCompra){
            valorTroco = 0;
            $("#valorTroco").val(valorTroco);
            alert("Não gerou troco");
            
        }else if(valorPago > valorCompra){
            
            valorTroco = valorPago - valorCompra;
            $("#valorTroco").val(valorTroco);
            
        }else{
            alert("Não gerou troco (Valor pago menor que valor da compra)");
        }
        notasUtilizadas();
        $("#valorCompra").val("");
        $("#valorPago").val("");
        $("#valorCompra").focus();
    }
}

validarCampos() e validarNan() são apenas funções de tratamento. A função notasUtilizadas() seria a função que não estou conseguindo fazer... Devo utilizar array, if, for nessa atividade.

 

Se alguém puder me ajudar, me dar umas dicas, agradeço muito!

 

Parte do HTML:

<!DOCTYPE html>
<html lang="pt-BR">
    <head>
        <meta charset="utf-8"/>
        <title>Calcular Troco</title>
        <script type="text/javascript" src="jquery.js"></script>
        <style type="text/css">
            fieldset { width:250px; }
            label { display:block; float:left; } 
            label, input, textarea, select { width:150px; margin: 5px 0; }
            th, td { border:1px solid #ccc; font-size:0.9em; }
        </style>
    </head>
    <body>
        
        <form id="formulario">
            <fieldset>
                <legend>Calcular Troco</legend>
                
                <label for="valorCompra" >Valor da compra:</label>
                <input type="text" id="valorCompra" name="valorCompra" /><br />
                
                <label for="valorPago" >Valor pago:</label>
                <input type="text" id="valorPago" name="valorPago" /><br /><br />
                
                <button type="button" id="button" onclick="calculaTroco()">Calcular troco</button><br /><br />
                
                <label for="valorTroco" >Valor do troco:</label>
                <input type="text" id="valorTroco" name="valorTroco" readonly="readonly"/><br /><br />    
                
                <label for="notasUtilizadas">Notas utilizadas:</label>
                <textarea rows="3" id="notasUtilizadas" readonly="readonly" ></textarea><br/>
                
            </fieldset>
        </form>
    <script type="text/javascript" src="troco.js"></script>
    </body>

</html>

Share this post


Link to post
Share on other sites

 Passei os valores como inteiro

 

int ValorCompra = 23, ValorPago = 100, ValorTroco, Nota1, Nota5, Nota10, Nota50;
        String Texto = "Notas à devolver:";
        ValorTroco = ValorPago - ValorCompra;
        Nota50 = ValorTroco / 50;
        ValorTroco = ValorTroco - Nota50 * 50;
        Nota10 = ValorTroco / 10;
        ValorTroco = ValorTroco - Nota10 * 10;
        Nota5 = ValorTroco / 5;
        ValorTroco = ValorTroco - Nota5 * 5;
        Nota1 = ValorTroco / 1;

//agora é so pegar o valor e destribuir do jeito que achar mais facil        

 

 

if (Nota50 > 0) {
            if (Nota50 > 1) {
                Texto = Texto + " " + Nota50 + " Notas de 50 Reais;";
            } else {
                Texto = Texto + " " + Nota50 + " Nota de 50 Reais;";
            }
        }
        if (Nota10 > 0) {
            if (Nota10 > 1) {
                Texto = Texto + " " + Nota10 + " Notas de 10 Reais;";
            } else {
                Texto = Texto + " " + Nota10 + " Nota de 10 Reais;";
            }
        }
        if (Nota5 > 0) {
            if (Nota5 > 1) {
                Texto = Texto + " " + Nota5 + " Notas de 50 Reais;";
            } else {
                Texto = Texto + " " + Nota5 + " Nota de 5 Reais;";
            }
        }
        if (Nota1 > 0) {
            if (Nota1 > 1) {
                Texto = Texto + " " + Nota1 + " Notas de 1 Real;";
            } else {
                Texto = Texto + " " + Nota1 + " Nota de 1 Real;";
            }
        }

        System.out.println("Seu troco é de "+(ValorPago - ValorCompra)+" Reais");
        System.out.println(Texto);

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ThosuZ
      Olá, pessoal! Estou com problemas pra organizar meu rodapé. Quero deixar da seguinte forma: as informações de contato e um formulário lado a lado, e em baixo as informações padrões de um rodapé ("Copyright 2020 etc").
       
      Eu criei uma div pras informações de contato e outra pro formulário, setei float: left e right pra eles respectivamente, mas a terceira div (Copyright) ficou no meio, não em baixo. Como resolvo?
       
      HTML:
       
      <footer> <div class="fcenter"> <div class="infos"> <p class="ftitulo">Águia Publicidade</p> <p class="finfos">Rua Treze de Maio, 191</p> <p class="finfos">Ed. Marc Jacob, sala 504</p> <p class="finfos">(91) 99182-4761</p> <p class="finfos">contato@aguiapublicidade.com</p> </div> <div class="contato"> <p class="ftitulo">Contate-nos</p> <form action="enviar.php" method="post" class="rodape"> <p class="formu">Nome: </p><input type="text"> </form> </div> </div> <div class="copyright"> <p class="rodape">&copy; Todos os direitos reservados. Desenvolvido por Arthur, designer da Águia&reg; Publicidade.</p> </div> </footer> CSS:
      /* footer settings */ footer { background-color: #303030; color: #fff; margin: 0px -8px 0px -8px; } .fcenter { width: 500px; margin: 0 auto; } .infos { float: left; } .contato { float: right; }  
      Como ficou:

       
      Como eu gostaria que ficasse mais ou menos:
      http://miritigrafica.com.br/#faleconosco
    • By WagnerFilho
      Não sei se estou aplicando o conceito de javascript modular corretamente, portanto preciso de ajuda!
      Eu separei os arquivos js por responsabilidades.
      Cada arquivo será encarregado para uma determinada função.
      Estou carregando estes arquivos da seguinte forma:

       
      <html> <head> </head> <body> <div id="app-info"> <span id="app-name">name</span> </div> <script src="controllers/controllerExample.js"></script> <script src="resources/ajaxApp.js"></script> <script src="models/modelExample.js"></script> <script src="app.js"></script> </body> </html> observação: Eu não quero ir para o requiresJS. sem que antes eu tenha entendido como realmente funciona o modular pattern
      Além disso, eu quero que o retorno do ajax seja atribuído à um objeto global, podemos chama-lo de ObjectApplication para que em qualquer lugar da aplicação eu possa acessa-lo ?
      Como posso fazer isto ?
      Então tenho alguns arquivos js.
       
      app.js controllers / controllerExample.js models / modelExample.js resources / ajaxApp.js
        app.js
      let ObjectApplication = {}; ;(function( window, document, undefined ) { 'use strict'; function app() { var $private = {}; var $public = {}; $private.privateVar = 'private var'; $public.publicMethod = function() { return 'Init'; }; $private.privateMethod = function() { return 'Private method'; }; return $public; } window.MyGlobalObject = window.MyGlobalObject || {}; window.MyGlobalObject.app = app(); })( window, document ); MyGlobalObject.controllerExample.publicMethod(); console.log(objectApplication.name);  
      controllerExample.js
      ;(function( window, document, undefined ) { 'use strict'; function controllerExample() { var $private = {}; var $public = {}; $private.privateVar = 'private var'; $public.publicMethod = function() { return MyGlobalObject.modelExample.publicMethod(); //return 'Init'; }; $private.privateMethod = function() { return 'Private method'; }; return $public; } window.MyGlobalObject = window.MyGlobalObject || {}; window.MyGlobalObject.controllerExample = controllerExample(); })( window, document );  
      modelExample.js
      ;(function( window, document, undefined ) { 'use strict'; function modelExample() { var $private = {}; var $public = {}; $private.privateVar = 'private var'; $public.publicMethod = function() { buildAppInfo(); //return 'Init in Model'; }; $private.privateMethod = function() { return 'Private method'; }; return $public; } window.MyGlobalObject = window.MyGlobalObject || {}; window.MyGlobalObject.modelExample = modelExample(); })( window, document );  
      ajax
      let buildAppInfo = () => { let url = 'app.json'; let xhr = new XMLHttpRequest(); xhr.open('GET', url, true); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if (xhr.status = 200) app = JSON.parse(xhr.responseText); console.log(app); } } xhr.send(); };
       
    • By Motta
      As 7 linguagens de programação que você deve aprender em 2020
    • By Gniusplay
      Olá pessoal, eu tenho um sistema de comentários que quando um "player" preenche esse comentário, ele vai direto para pagina inicial, funciona como um feedback, só que ele pode usar isso várias e várias vezes, eu queria que ele usasse apenas uma vez e não pudesse mais utilizar, sendo assim só seria possível usar uma vez.
      Ou q só poderia usar se tivesse x quantidades de pontos no banco de dados(eu tenho uma coluna com pontos) e a cada vez que ele usasse esse formulário(comentário), ele perderia 1 ponto,e  quando não tivesse mais pontos, ele não poderia comentar.
      Alguém tem alguma ideia de como posso fazer isso? e qual funções utilizar?
      VALEUU!!!
    • By tii3030
      Olá pessoal, desenvolvi um pequeno código em PHP com a função de verificar e validar usuário e senha de um formulário, juntamente com o meu banco de dados MySql.
      Gostaria de saber como aprimorar o meu código para torna-lo mais seguro e mais próximo de algo "profissional". Lembrando que minha senha no banco está criptografada (PASSWORD_BCRYPT).
       
      <?php
          #----------------- INCLUDING FILE --> "conf.php"
          include('conf.php');
              if (isset($_POST['submit'])) {
             
      #--------------------------------INPUTS ---------------------------------------------#
                  $email = mysqli_real_escape_string($conexao, $_POST['email']);
                  $password = mysqli_real_escape_string($conexao, $_POST['password']);
      #-----------------------#----------------------#-----------------_#-------------------#
                  $query_select_email = "SELECT email FROM usuarios WHERE email = '$email'";
                  $select_email = mysqli_query($conexao,$query_select_email);
                  $query_select_password = "SELECT password FROM usuarios";
                  $select_password = mysqli_query($conexao,$query_select_password);
                  while($array = mysqli_fetch_array($select_password)) {
                  $logarray = $array['password'];
                  
                      if (password_verify($password, $logarray)) {
                          if (mysqli_num_rows($select_email) == 1) {
                              
                          $_SESSION['email'] = $email;
                          header('location: XXX.html');
                          exit();
                          }
                      }
                      else {
                          echo "Loguin ou senha incorretos";
                      }
                  $logarray = '0';
                  }
              }
      ?>
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.