Ir ao conteúdo

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


Ir à solução Resolvido por kgin,

Posts recomendados

Postado

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

 

 

  • Solução
Postado

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
Postado

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

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...