3
respostas

Pq meu código retorna o resultado errado do cálculo?

Olá! Estou inventando alguns códigos para fixar o conhecimento das aulas. No código abaixo a intenção é calcular a média de um aluno.

Quando eu coloco os valores diretamente na var media, o cálculo retorna sem erros. Entretanto, da forma como esta o código (com o prompt), o resultado da função retorna errado.

Eu não estou conseguindo entender qual o erro, se alguém puder me ajudar eu agradeço muito =)

<meta charset="UTF-8">

<script>

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

function mostra(texto){
    document.write(texto);
    pulaLinha();

}

function calculaMedia(a,b,c,d){
    return (a + b + c + d) / 4 ;
}


var aValor = prompt("Qual a nota da primeira prova?");
var bValor = prompt("Qual a nota da segunda prova?");
var cValor = prompt("Qual a nota da terceira?");
var dValor = prompt("Qual a nota da quarta prova?");

var media = calculaMedia(aValor, bValor, cValor, dValor);

mostra("Média:" + media);

</script>

3 respostas

Olá, Thamara.

É ótimo que esteja praticando.

O erro foi simples, mas é bem comum no início. Quando se recebe valores pela função prompt, eles vem como string. Você terá que converte-los para o tipo que deseja, no seu caso, float. Para fazer isso, basta utilizar a função parseFloat. Acho que com essa mudança, seu código roda direitinho.

O código com a mudança seria:

<meta charset="UTF-8">

<script>

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

function mostra(texto){
    document.write(texto);
    pulaLinha();

}

function calculaMedia(a,b,c,d){
    return (a + b + c + d) / 4 ;
}


var aValor = parseFloat(prompt("Qual a nota da primeira prova?"));
var bValor = parseFloat(prompt("Qual a nota da segunda prova?"));
var cValor = parseFloat(prompt("Qual a nota da terceira?"));
var dValor = parseFloat(prompt("Qual a nota da quarta prova?"));

var media = calculaMedia(aValor, bValor, cValor, dValor);

mostra("Média:" + media);

</script>

Espero ter ajudado.

Muito obrigada, Madson! Rodou direitinho com essa função =)

Ótimo, Thamara.

Você pode marcar a minha resposta como solução da dúvida? assim esse tópico sai da pilha de dúvidas pendentes.