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

Console imprime NaN

Preciso que o resultado da função calculoSilte diminua do resultado da função anterior calculoArgila. Mas retorna NaN, não sei como corrigir.

4 respostas

Fala, Ricardo!!! Tudo bom contigo?

Viu pedir para postar seu código completo para que possamos dar uma olhada!

Ficaremos no aguardo!

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br><hr>");
    }
    function mostra(parametro) {
        document.write(parametro);
        pulaLinha();
    }
    mostra("<h1>Física do solo</h1>");
    function calculoArgila(pesoArgila, taraCadinho, provaBranca, diluicao) {
        var argila = Math.round((((pesoArgila - taraCadinho))-provaBranca)*diluicao);
        mostra("Argila = " + argila);
    }
    function calculoSilte(pesoSilte, taraCadinho, provaBranca, diluicao) {
        var silte = Math.round(((((pesoSilte - taraCadinho))-provaBranca)*diluicao))-calculoArgila;
        mostra("Silte= " + silte);
    }

    calculoArgila(33.0849, 33.0062, 0.013, 500);
    calculoSilte(32.5366, 32.4262, 0.013, 500);


        // var diluicao = 500;
        // var provaBranca = 0.013;
        // var pesoArgila = 29.6751;
        // var taraCadinho = 29.6018;
        // var resultadoArgila = Math.round((((pesoArgila - taraCadinho))-provaBranca)*diluicao);


    // mostra("Silte = ");
    // mostra("Areia = ");
</script>

Sou novo no forum, não coloquei certo no post anterior!

solução!

Tranquilo, Ricardo!! Vamos lá!!!

O que ocorre é que ao chamar a função calculoArgila(33.0849, 33.0062, 0.013, 500);roda perfeitamente dentro da função

function calculoArgila(pesoArgila, taraCadinho, provaBranca, diluicao) {
        var argila = Math.round((((pesoArgila - taraCadinho))-provaBranca)*diluicao);
        mostra("Argila = " + argila);
    }

Porém, quando chamamos a outra função calculoSilte(32.5366, 32.4262, 0.013, 500); ele entra dentro da função

function calculoSilte(pesoSilte, taraCadinho, provaBranca, diluicao) {
        var silte = Math.round(((((pesoSilte - taraCadinho))-provaBranca)*diluicao))-calculoArgila;
        mostra("Silte= " + silte);
    }

e encontrará uma Stringquando for entrar no calculaArgilaatravés do calculaSilte. Por esse motivo ele gera o NotANumber

Para resolvermos podemos retirar os mostras de dentro das funções e também retirar o -calculoArgila acrescentando um return em ambos

function calculoArgila(pesoArgila, taraCadinho, provaBranca, diluicao) {
        var argila = Math.round((((pesoArgila - taraCadinho)) - provaBranca) * diluicao);
        return argila;
    }
function calculoSilte(pesoSilte, taraCadinho, provaBranca, diluicao) {
        var silte = Math.round((((pesoSilte - taraCadinho) - provaBranca) * diluicao));
        return silte;
    }

Após isso, vamos guardar esses cálculos em variáveis

    var argila = calculoArgila(33.0849, 33.0062, 0.013, 500);
    var silte = calculoSilte(32.5366, 32.4262, 0.013, 500);

Agora podemos "mostrar" os resultados chamando somente as variáveis, e no caso do Silte vamos calculá-lo dentro do "mostra"

    mostra("Argila " + argila)
    mostra("Silte " + (silte - argila))

Essa é uma solução! Se encontrar outra, por favor compartilhe conosco ;-)

Espero ter ajudado, Ricardo!

Um abraço e bons estudos!!!

Sim está ótimo, eu só precisava segui pra próxima aula, e aprender a usar o "return". O Código está assim:

<meta charset="UTF-8">
<script>
    function pulaLinha() {
        document.write("<br><hr>");
    }
    function mostra(parametro) {
        document.write(parametro);
        pulaLinha();
    }
    mostra("<h1>Física do solo</h1>");
    function calculoArgila(pesoArgila, taraCadinho, provaBranca, diluicao) {
        return Math.round((((pesoArgila - taraCadinho))-provaBranca)*diluicao);
    }
    function calculoSilte(pesoSilte, taraCadinho, provaBranca, diluicao) {
        return Math.round((((pesoSilte - taraCadinho))-provaBranca)*diluicao);
    }
    var resultadoArgila = calculoArgila(33.0849, 33.0062, 0.013, 500);
    var resultadoSilte = calculoSilte(32.5366, 32.4262, 0.013, 500);

    mostra("Argila = " + resultadoArgila);
    mostra("Silte = "  + (resultadoSilte-resultadoArgila));
    mostra("Areia = " + (100 - (resultadoArgila+resultadoSilte)));
</script>

Obrigado pela ajuda!