Ir ao conteúdo
  • Cadastre-se

Javascript Porque o código não saiu como esperado (Iniciante Java Script)


Ir à solução Resolvido por kgin,

Posts recomendados

Sou novo no mundo da programação e estou começando com java script, gosto de fazer alguns exercícios básicos no Visual Studio Code como forma de estudo, porém estou a algum tempo tentando achar o que eu errei nesse código e não estou encontrando, se alguém puder me ajudar ficaria grato, peço desculpas de for algo extremamente simples ou banal, Queria saber o por que está emitindo no console que o triangulo é Escaleno no lugar de Equilátero.

 

 

 

function TiposDeTriangulos(Lado1, Lado2, Lado3) {
    const Equilátero = Lado1 == Lado2 && Lado1 == Lado3
    const Isósceles = Lado1 == Lado2 || Lado2 == Lado3 || Lado3 == Lado1
    const Escaleno = Lado1 != Lado2 && Lado1 != Lado3 && Lado2 != Lado3
    if (Equilátero != Isósceles && Equilátero != Escaleno)
        return "Este triangulo é Equilátero"
    if (Isósceles != Equilátero && Isósceles != Escaleno)
        return "Este triangulo é Isósceles"
    if (Escaleno != Equilátero && Escaleno != Isósceles)
        return "Este triangulo é Escaleno"
}



console.log(TiposDeTriangulos(2, 2, 2))
console.log(TiposDeTriangulos(1, 2, 2))
console.log(TiposDeTriangulos(1, 2, 3))



/*

    Equilátero: Os três lados são iguais.
    Isósceles: Dois lados iguais.
    Escaleno: Todos os lados são diferentes.

*/

 

image.png.6036923705a9dff5535ab5ec9c7a3e60.png

 

 

Link para o comentário
Compartilhar em outros sites

  • Solução

Eu não sei javascript, mas irei tentar explicar o que está acontecendo.

 

Quando você compara o isósceles ele vai ser verdadeiro se qualquer lado for igual.

	const Isósceles = Lado1 == Lado2 || Lado2 == Lado3 || Lado3 == Lado1

ai quando você vai testar se o triangulo e equilátero a condição será falsa, porque você está dizendo se equilátero for diferente de isósceles que não é.

if (Equilátero != Isósceles && Equilátero != Escaleno)
        return "Este triangulo é Equilátero"

então você compara a variável equilátero com a isósceles que são ambas verdadeiras que vão dar o resultado de falso, é a mesma coisa acontece com equilátero e escaleno.

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Olá!
Segue sugestão de solução:
 

// contar lados iguais
const countEqualSides = (triangle) => {

    const equalSides = {}

    for(const side of triangle){
        equalSides[side] = (equalSides[side] || 0) + 1;
    }

    return Object.keys(equalSides).length;
}

const TipoDeTriangulo = (Lado1, Lado2, Lado3) => {

    const equalSides = countEqualSides([Lado1, Lado2, Lado3]);

    // Escaleno: Todos os lados são diferentes
    if (equalSides == 1)
        return "Este triangulo é Escaleno"
    // Isósceles: Dois lados iguais
    if (equalSides == 2)
        return "Este triangulo é isósceles"
    // Equilátero: Os três lados são iguais
    if (equalSides == 3)
        return "Este triangulo é equilátero"
}


console.log(TipoDeTriangulo(2, 2, 2))
console.log(TipoDeTriangulo(1, 2, 2))
console.log(TipoDeTriangulo(1, 2, 3))

 

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...