No internet connection
  1. Home
  2. Exercícios do Beecrowd

Fórmula de Bhaskara 1003 JavaScript

Por Taís Saito @Tais
    2023-03-06 01:32:33.888Z

    Olá pessoal, não estou conseguindo ver o erro no meu código, alguém pode me ajudar?

    var input = require('fs').readFileSync('stdin', 'utf8');
    var lines = input.split('\n');

    function validacaoDaFormula() {
    var a = parseFloat(lines.shift());
    var b = parseFloat(lines.shift());
    let c = parseFloat(lines.shift());

    var delta = b ** 2 - (4 * a * c);
    
    if (delta < 0 || a === 0) {
        return [a, b, delta, true];
    }
    else {
        return [a, b, delta, false];
    }
    

    }

    let informacoesDaValidacao = validacaoDaFormula();

    if (informacoesDaValidacao[3] === false) {
    
                              
    
            let raiz_1 = (-informacoesDaValidacao[1] + Math.sqrt(informacoesDaValidacao[2])) / (2.0 * informacoesDaValidacao[0]);
    
            let raiz_2 = (-informacoesDaValidacao[1] - Math.sqrt(informacoesDaValidacao[2])) / (2.0 * informacoesDaValidacao[0]);
    
            
        console.log(`R1 = ${raiz_1.toFixed(5)}`);
        console.log(`R2 = ${raiz_2.toFixed(5)}`);
    }
     
    
    else {
        return console.log("Impossivel calcular");
    }
    
    Resolvido no post #4, clique para visualizar
    • 7 respostas
    1. Boa noite, o seu problema esta na leitura das variáveis, a variável lines é um vetor em que cada posição possui o conteúdo de cada linha, nesse exercício vc só tem 1 linha como entrada, então esse vetor lines só vai ter uma posição, que no caso da posição 0 já vai ser uma entrada do tipo "10.0 20.1 5.1" e não um numero em si;
      Uma solução é apenas pegar a entrada fazendo algo como const entrada= lines[0], que no caso vai ser algo como "10.0 20.1 5.1". Lembra que isso é uma string com os valores separados por espaço, recomendo o método siplt() para tratar isso ai.

      Tbm posso te dar algumas dicas de como deixar o código melhor e mais fácil de ler, o que te ajudaria muito a encontrar problemas:

      1- Evite declarar variáveis com var, especialmente dentro de funções, pq elas não são limitadas por escopo, ou seja, se vc tiver uma variável com o mesmo nome fora do escopo da sua função eles vão entrar em conflito. O escopo é o que esta dentro das chaves {}.

      2- Se vc quer usar uma função para fazer a validação é melhor usar uma função que retorne uma valor booleano, true ou false, pq assim vc n vai precisar utilizar novas variáveis para calcular as raízes, ( eu pessoalmente nessa questão, prefiro não usar funções )

      1. Taís Saito @Tais
          2023-03-06 13:32:47.704Z

          Essa questão da entrada ser uma única linha pode estar dando problema mesmo. Vou tentar usar o split, depois volto aqui para contar se funcionou. Quanto ao var, foi uma tentativa desesperada kkkk

          1. Em resposta agabrielSantos:
            Taís Saito @Tais
              2023-03-07 00:06:58.007Z

              Fiz o que me falou, coloquei o split(' ') e deu certo, depois de muitas tentativas hehehe. Obrigada.

            • Em resposta aTais:

              Oi Taís! Que erro está dando para ti? Eu fiz de uma forma beeem diferente, e estou bem no início do estudo de JS, mas to tentando entender o teu código para ajudar hahahaha

              1. Taís Saito @Tais
                  2023-03-06 13:37:11.206Z

                  Oi Carol, eu também estou na peleja para conseguir fazer kkk o erro é esse

                  files dont match - see output

                  *** 1036-a.out 2023-03-06 01:28:47.720098653 +0000
                  --- 1036/1036-a.sol 2014-11-13 17:40:47.657588000 +0000


                  *** 1,2 ****
                  ! R1 = NaN
                  ! R2 = NaN
                  --- 1,2 ----
                  ! R1 = -0.29788
                  ! R2 = -1.71212
                  Differences were found

                  files dont match - see output

                  *** 1036-c.out 2023-03-06 01:28:49.744090315 +0000
                  --- 1036/1036-c.sol 2014-11-13 17:40:47.369587000 +0000


                  *** 1,2 ****
                  ! R1 = NaN
                  ! R2 = NaN
                  --- 1 ----
                  ! Impossivel calcular
                  Differences were found

                • Em resposta aTais:

                  Boa noite não sei se posso te ajudar pois tenho pouco conhecimento mas poderia falar até para ficar mais fácil para os colegas qual erro que está dando

                  1. Taís Saito @Tais
                      2023-03-06 13:37:55.611Z

                      Oi Marcelo, coloquei o erro no comentário da Carol ;)