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

Não enxergo o erro!

Boa noite, pessoal. Estou executando um código para cálculo de média, porém não esta me retornando o resultado esperado, pois ele está juntando os dois valores informados e retornando a divisão desta junção. Já fiz diversas alterações, mas não encontro o erro, que acredito ser coisa simples. Segue o código para análise:

<meta charset="UTF-8">

<script>

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

    function calculaMedia(nota1, nota2){
        return (nota1 + nota2) / 2;
    }

    alert("Sistema Básico de Cálculo de Média!");

    mostra("<n3>Sistema Básico de Cálculo de Média!</n3>");

    var nome = prompt("Informe seu nome: ");
    var nota1 = prompt(nome + ", informe sua nota da primeira avaliação: ");
    var nota2 = prompt(nome + ", informe seu nota da segunda avaliação: ");
    var media = calculaMedia(nota1, nota2);

    mostra("Olá, " + nome + " sendo sua primeira nota " + nota1 + " e sua segunda nota " + nota2 + ", sua média será igual a "+ media);

</script>
3 respostas
solução!

Oi Gilberto, tudo certo?

O que ocorre é que o prompt te devolve um texto (mesmo você digitando um número).

Quanto dá "teste" / 44? Não dá pra fazer isso!

Então o que daria para ser feito com esse número-texto que o prompt devolve? Transformar em número-número.

Algo assim resolve:

var nota1 = parseInt(nota1);
var nota2 = parseInt(nota2);

Só adicionar essas linhas depois de você pedir as notas. Aí estou falando "crie uma variável com o mesmo nome (nota1) e deixa ela mesma em formato de número. Idem para o nota2.

O parseInt converte um número-texto para número-número, um inteiro. Se precisasse de casas decimais, daria para usar o irmão dele, o parseFloat.

Não sei te dizer em que ponto você verá esses caras no curso, mas com certeza eles estão presentes em alguma aula.

Se precisar, fiz esse mesmo código nesse Jsbin.

Espero ter ajudado,

Abcs e bons estudos!

Gilberto, o valor retornado pelo método prompt é um texto. Tente substituir a chamada do método calcula média desse modo:

var media = calculaMedia(parseInt(nota1), parseInt(nota2));

Desse modo você garante que o valor que será passado será numérico! O método parseInt() faz isso pra voce, transformando o texto em inteiro. Se quiser números com casas decimais use parseFloat().

Obrigado pessoal pela ajuda. Entendi como funciona. Em sequencia no curso o professor esta abordando o tema. Novamente obrigado!