Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Conferir código por gentileza

Olá Flávio, tudo bem?

Estou adorando o curso... eu tentei fazer o exercício com outro exemplo. Porém, não calcula corretamente. Você pode por gentileza me informar o que estou fazendo de errado?

<meta charset="utf-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function calculaMedia(nota1, nota2, nota3) {

        return (nota1 + nota2 + nota3)/3;
    }


    var nome = prompt("Informe seu nome");
    var nota1Informada = prompt(nome + ", informe sua 1ª nota");
    var nota2Informada = prompt(nome + ", informe sua 2ª nota");
    var nota3Informada = prompt(nome + ", infome sua 3ª nota");

    var media = calculaMedia(nota1Informada, nota2Informada, nota3Informada);
    mostra(nome + ", sua média é: " + media);

</script>

Att., Alexandre

3 respostas
solução!

Olá Alexandre,

O problema foi que os valores da nota estavam sendo concatenados e depois divididos por 3.

Usei a função parseInt() para converter para inteiros os valores passados à função calculaMedia().

Utilizei também o método .toFixed(2) para mostrar a média com duas casas decimais.

Segue o código corrigido. Testei aqui e funcionou:

<meta charset="utf-8">

<script>

function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function calculaMedia(nota1, nota2, nota3) {

        return (nota1 + nota2 + nota3)/3;
    }


    var nome = prompt("Informe seu nome");
    var nota1Informada = prompt(nome + ", informe sua 1ª nota");
    var nota2Informada = prompt(nome + ", informe sua 2ª nota");
    var nota3Informada = prompt(nome + ", infome sua 3ª nota");

    var media = calculaMedia(parseInt(nota1Informada), parseInt(nota2Informada), parseInt(nota3Informada));
    mostra(nome + ", sua média é: " + media.toFixed(2));

</script>

Olá de novo Alexandre,

Fiz uma pequena mudança no código. Não altera nada no resultado mas o deixa mais enxuto.

Mudei a função de parseInt() para parseFloat,pois afinal estamos lidando com notas e os valores podem vir com ponto decimal.

Movi a função parseFloat() para dentro da função calculaMedia(). Agora você pode passar como parâmetro uma string que a função se encarregará de converter para float.

<meta charset="utf-8">

<script>
    function pulaLinha() {
        document.write("<br>");
    }

    function mostra(frase) {
        document.write(frase);
        pulaLinha();
    }

    function calculaMedia(nota1, nota2, nota3) {

        return (parseFloat(nota1) + parseFloat(nota2) + parseFloat(nota3))/3;
    }


    var nome = prompt("Informe seu nome");
    var nota1Informada = prompt(nome + ", informe sua 1ª nota");
    var nota2Informada = prompt(nome + ", informe sua 2ª nota");
    var nota3Informada = prompt(nome + ", infome sua 3ª nota");

    var media = calculaMedia(nota1Informada, nota2Informada, nota3Informada);
    mostra(nome + ", sua média é: " + media.toFixed(2));

</script>

Olá Leonardo! Eu entendi...fi bem explicado. Só não compreendi porque no exercício IMC nao houve a necessidade de utilizar parseInt() ou parseFloat().

<meta charset="utf-8">

<script>

    function pulaLinha() {

        document.write("<br>");
        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    function calculaImc(altura, peso) {

        return peso / (altura * altura);
    }

    var nome = prompt("Informe seu nome");
    var alturaInformada = prompt(nome + ", informe sua altura");
    var pesoInformado = prompt(nome + ", informe seu peso");

    var imc = calculaImc(alturaInformada, pesoInformado);

    mostra(nome + ", o seu IMC calculado é " + imc);




</script>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software