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 Emilio Saymon
      tenho um site que precisa que assim que eu aperte um botão ele verifiquei se a variavel sala for sala 1 ele abre no modal da sala1 se não abre no modal da sala2. Dei uma pesquisada e vi que da pra fazer com a função onclik(), mas não tenho noção como fazer. Aqui vai o código.
      botão <td><a href="#" class="btn btn-primary" data-toggle="modal" data-target="#modalLoginForm">XXX</a></td> <!-- sala 1 --> <div class="modal-body mx-3"> <div class="md-form mb-4"> <form method="POST" action="valida.php"> <h6>Sala 1</h6> <input type="password" class="form-control validate" name="senha"> </div> </div> <button type="submit" class="btn btn-primary" name="enviar">Entrar</button> </form> </div> </div> </div> </div> </div> <!-- sala 2 --> <div class="modal fade" id="modalLoginForm2" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header text-center"> <h4 class="modal-title w-100 font-weight-bold">Senha</h4> <button type="btn-primary" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body mx-3"> <div class="md-form mb-4"> <form method="POST" action="valida.php"> <p>Sala 2</p> <input type="password" class="form-control validate" name="senha2"> </div> </div> <div class="modal-footer d-flex justify-content-center"> <button type="submit" class="btn btn-primary" name="enviar1">Entrar</button> </form> </div> </div> </div> </div>  
    • By joazinDev
      Estou tentando calcular duas horas e as vezes precisso que ela saia negativa tbm
      Exemplo:
      07:33 - 07:48 = -00:15
      Como faço isso utilizando php ?
    • By Filhote de Dev
      Estou fazendo um requisição HTTP e de retorno recebo um Json! Então eu quero pegar esse valor de Json e atribuir a outra variável para poder modificá-la e depois exibir as duas lado a lado para comparar. Então me deparei com 2 problemas o primeiro é que não estou conseguindo atribuir o valor httpRequest.responseText a uma variável, já tentei a função eval() e a toString() e quando eu peço para printar com um alert() para verificar me retorna undefined o segundo problema é que eu estava exibindo o resultado na dom por meio de appendChild(), estou exibindo apenas com os valores originais para teste, mas quando ele executa esse trexo do code, ele printa na dom e logo em seguida retira da dom, tipo uma piscadinha rápida. Ficaria grato se me ajudassem a resolver esse problema.
       
      o Json que ele recebe de uma pagina .html é esse:
      {"numero_casas":9,"token":"68c56aa784fe216ae92720b76386ea0995055074","cifrado":"fqnw rw mxdkc, unjen rc xdc. sxbqdj kuxlq","decifrado":"","resumo_criptografico":""}  
      o Script esta assim:
      var httpRequest function request(){ var url = 'test.html'//apagar depois if (window.XMLHttpRequest) { // Mozilla, Safari, ... httpRequest = new XMLHttpRequest() } else if (window.ActiveXObject) { // IE try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP") } catch (e) { try { httpRequest = new ActiveXObject("Microsoft.XMLHTTP") } catch (e) {} } } if (!httpRequest) { alert('Giving up :( Cannot create an XMLHTTP instance') return false } httpRequest.onreadystatechange = alertContents httpRequest.open('GET', url, true) httpRequest.responseType = 'jason' httpRequest.send() httpRequest.onload = function(){ view(httpRequest) } } function alertContents() { if (httpRequest.readyState === 4) { if (httpRequest.status === 200) { alert(httpRequest.responseText) } else { alert('There was a problem with the request.') } } } function view(httpRequest){ var resposta = httpRequest.responseText.toString() alert(resposta.value) var box = document.querySelector('div#decoding') box.setAttribute('class', 'shadow') var challenge = document.createElement('fieldset') challenge.setAttribute('class', 'painting') var legendChallenge = document.createElement('legend') legendChallenge.innerHTML = 'Challenge' challenge.innerHTML = `Número de casas: ${httpRequest.response.numero_casa}<br> Token: ${httpRequest.response.token}<br> Cifrado: ${httpRequest.response.cifrado}<br> Decifrado: ${httpRequest.response.decifrado}<br> Resumo Criptografico: ${httpRequest.response.resumo_criptografico}` var answer = document.createElement('fieldset') answer.setAttribute('class', 'painting') var legendAnswer = document.createElement('legend') legendAnswer.innerHTML = 'Answer' answer.innerHTML = `Número de casas: ${httpRequest.response.numero_casas}<br> Token: ${httpRequest.response.token}<br> Cifrado: ${httpRequest.response.cifrado}<br> Decifrado: ${httpRequest.response.decifrado}<br> Resumo Criptografico: ${httpRequest.response.resumo_criptografico}` box.appendChild(challenge) box.appendChild(answer) challenge.appendChild(legendChallenge) answer.appendChild(legendAnswer) }  
       
      Index.html:
      <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="style.css"> <title>Caesar cipher</title> </head> <body> <header> <h1>Caesar cipher</h1> </header> <section> <div class="container"> <div class="box"> <div class="form"> <form action=""> <div> <fieldset class="shadow"> <legend><h1>Decoding</h1></legend> <button id="btntoken" onclick="request()">Fetch Encryption Challenge</button> </fieldset> </div> <div id="decoding" class="aling"></div> </form> </div> </div> </div> </section> <footer> </footer> <script type="text/javascript" src="script.js"></script> </body> </html>  
       
      e o style.css para dar sentido as class:
      /*zerando margein e padding de todos os elementos*/ *{ margin: 0; padding: 0; } /*definido estilo padrão*/ body{ font-family: 'Courier New', Courier, monospace; font-size: 16px; background-color: #F5F6FA; } /*Estilização e alinhamento do cabeçario*/ header{ background-color: #22212F; color: #FFF; height: 80px; font-size: 24px; align-items: center; display: flex; padding-left: 15px; } /*Alinhamento das tags presentes na section*/ section,div.form{ display: flex; justify-content: center; } div.container{ margin:5px; width: 800px; background-color: #FFF; padding: 15px; margin-top: 20px; } div.parag,div.box{ display: block; } div.form{ margin-top:30px; } p{ margin-top: 10px; } /*estilização do formulario principal*/ .shadow{ box-shadow: 5px 5px 5px 2px #22212F; } fieldset{ width: 500px; min-height:150px; padding: 10px; } legend{ font-size: 20px; } input#token{ font-size: 16px; width: 350px; height: 30px; } button#btntoken{ margin: 5px; margin-top:15px; width:480px; height: 50px; font-size: 24px; } /*estilização da resposta ao usuário*/ .aling{ margin: 20px; } .painting{ display: inline-block; width: 230px; min-height: 100px; }
×

Important Information

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