Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dificuldade na criação de uma calculadora

Estou tentando criar uma calculadora sem a função eval em javascript, porém estou tendo a dificuldade com a seguinte situação: Eu quero que toda a minha expressão seja apresentada na tela:

1+1+1+1+1....

Porém estou enfrentando o problema onde é calculado apenas os dois primeiros números são calculados e o restante da expressão é ignorada. Por exemplo, se o usuário digita 1+1+1 o meu resultado esta sendo 2.

Abaixo um exemplo de como esta o meu código, no caso estou apresentando apenas a soma:

function calcular() {
    var conta = document.getElementById('resultado').value;
    var expressao = new String(conta);

    for (var i = 0; i < expressao.length; i++) {

        if (expressao.charAt(i) == "+") {
            var num = new String(expressao.split('+'))
            console.log("entrei", num);

            n1 = num.substring(0, num.indexOf(','));
            n2 = num.substring(num.indexOf(',') +1, num.length)
            console.log("n1", n1);
            console.log("n2", n2);

            var resultadoFinal = parseFloat(n1) + parseFloat(n2);
            console.log(resultadoFinal);
            document.getElementById('resultado').value = resultadoFinal;
        }
    }
}

Alguém poderia me dar uma luz de como faço para que seja calculada toda a minha expressão?

1 resposta
solução!

Olá Natali,

Pelo que entendi, você está tentando criar uma calculadora em JavaScript sem utilizar a função eval. Uma opção para resolver o problema que você mencionou é utilizar a função split para dividir a expressão em um array e depois iterar sobre esse array realizando as operações matemáticas.

Segue um exemplo de como você pode fazer isso:

function calcular() {
    var conta = document.getElementById('resultado').value;
    var expressao = new String(conta);
    var numeros = expressao.split("+");
    var resultadoFinal = 0;

    for (var i = 0; i < numeros.length; i++) {
        resultadoFinal += parseFloat(numeros[i]);
    }

    document.getElementById('resultado').value = resultadoFinal;
}

Nesse exemplo, a função split é utilizada para dividir a expressão em um array de strings contendo os números. Depois, um loop é utilizado para somar todos os números do array e o resultado é exibido na tela.

Espero ter ajudado e bons estudos!