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");
}
Gabriel de Araújo Santos @gabrielSantosBoa 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 comoconst 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 )
Taís Saito @TaisEssa 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
- Em resposta agabrielSantos⬆:
Taís Saito @TaisFiz o que me falou, coloquei o split(' ') e deu certo, depois de muitas tentativas hehehe. Obrigada.
Em resposta aTais⬆:Carolina Castilhos @carolinacastilhosOi 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
Taís Saito @TaisOi 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 foundfiles 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⬆:Marcelo Furtado de Oliveira @marcelofBoa 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
Taís Saito @TaisOi Marcelo, coloquei o erro no comentário da Carol ;)