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

Ao invés de somar números, está concatenando-os.

Fiz um teste pra calcular a média de 3 notas, com prompt para que o usuário informe as notas a serem calculadas. Mas, ao invés de calcular as três notas, ele concatena os valores informados. Ex: notas 6, 6 e 6. Ao invés de somar as 3 notas e dividir por 3 (o que resultaria 6), ele concatena, resultando em 666. Após isso ele divide esse resultado por 3, resultando em 222. Se alguém puder ajudar, fico grato.

<meta charset="UTF-8">

<script>

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

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

    function calculaMedia(nota1, nota2, nota3)
    {
        var soma = ((nota1+nota2+nota3)/3);
        return soma;
        }

    var nota1 = prompt("Informe a 1ª nota: ");
    var nota2 = prompt("Informe a 2ª nota: ");
    var nota3 = prompt("Informe a 3ª nota: ");

    var resultado = calculaMedia(nota1, nota2, nota3);
    mostra("A média calculada é: " + resultado);

</script>
2 respostas
solução!

Olá, Regis,

A função prompt retorna um TEXTO (ou STRING). Lembre-se que o texto fica sempre entre aspas duplas.

Então perceba que "5" é diferente de 5. O programa entende "5" como um texto e 5 como um número. Então se eu fizer 5+5 ele me retornará 10. Se eu fizer "5" + "5" o retorno será 55.

Como você já sabe, o prompt retorna um texto, por isso ele está concatenando. Para que retorne um número, temos que converter o resultado em número.

Para isso utilizamos a função parseInt (o I é maiúsculo).

var numero = parseInt("3");

Esse código acima converte o 3, que ele percebe ser um número, em 3 e joga na variável número.

Perceba que se o valor não for um número, o resultado será NaN (not a number).

var teste = parseInt("texto");

o valor de teste será NaN.

No seu caso, una o comando parseInt com o prompt.

var nota1 = parseInt(prompt("Informe a 1ª nota: "));

Primeiro ele executará o prompt (perguntando a nota), aí o resultado será convertido para número.

Olá, Danilo. Muito obrigado pela explicação. Resolveu a dúvida. Não conhecia ainda a função parseInt, mas já fiz o teste aqui e deu certo. Muito Obrigado. Um grande abraço.