Ir ao conteúdo

Posts recomendados

Postado

Boa tarde, meu código não está funcionando direito. Ele apenas diz que o triângulo existe quando todos os valores são iguais.

A questão é a seguinte:

Ler 3 valores (A, B e C) representando as medidas dos lados de um triângulo e escrever se forma ou não um triângulo. OBS: para formar um triângulo, o valor de cada lado deve ser menor que a soma dos outros dois.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Questão 5</title>
</head>
<body>
    <script>
        function programa () {
            var lado1 = prompt("Digite o valor A: ");
            var lado2 = prompt("Digite o valor B: ");
            var lado3 = prompt("Digite o valor C: ");

            if (lado1<lado2+lado3) {
                if (lado2<lado1+lado3) {
                    if (lado3<lado1+lado2) {
                        alert("O triângulo existe.");
                    }
                    else
                        alert("O triângulo não existe.");
                }
                else
                    alert("O triângulo não existe.");
            }
            else
             alert("O triângulo não existe.");
        }

    </script>
    <button type="button" onclick="programa()"> Iniciar</button>
    
</body>
</html>

 

Postado

@Lukinh4s  Tudo bem? Então, o motivo pelo qual ele não retorna o "else" é porque se você perceber sempre dará true. 

 

Abaixo terá seu mesmo código com uma leve alterada utilizando o operador lógico "&&", o código está descrevendo: Se a primeira, a segunda e a terceira condição for verdadeira retorna true, caso contrário false.

 

Vamos supor que para os 3 lados eu dei o valor 13 para o lado1, 15 para o lado2 e 20 para o lado3.

                                                              

Se(if) lado1(13) for menor que lado2(15) mais(+) o lado3(20) (15 + 20 = 35). Verdadeiro. A primeira condição foi verdadeira porque 13 é menor que 35, mas as outras também terão que ser true senão o "else" será executado.

 

lado2 é menor que lado1 + lado3? Verdade

lado3 é menor que lado1 + lado2? Verdade

 

E se lado1 for 20, lado2 for 20 e lado3 também 20?

lado1 é menor que (<) lado2 + lado3? 

lado1 é 20 mais lado2 + lado3 é 40. A resposta é true.

 

Então a condicional sempre retornara verdadeiro independentemente se for ou não igual.

 

if (lado1 < (lado2 + lado3) &&  
    lado2 < (lado1 + lado3) && 
    lado3 < (lado1 + lado2)) {
  // Alerta em uma caixa de diálogo que existe
  alert("O triângulo existe.");  
} else {   
  // Caso contrário alerta que não existe
  alert("O triângulo não existe.");  
}

 

 

Postado

@Lukinh4s Uma solução foi essa.

if ((lado1 && lado2 && lado3) < (lado2 + lado3) &&  
    (lado1 && lado2 && lado3) < (lado3 + lado1) &&
    (lado1 && lado2 && lado3) < (lado1 + lado2)) {
    alert("O triângulo existe.");  
} else {   
  alert("O triângulo não existe.");  
}

 

  1.  Se lado1 e 2 e 3 for menor que lado2 somado com o lado3
  2.  Alertar que o triângulo existe
  3.  Senão alertar que não existe
  4.  Fim

 

Observe que o valor de cada lado ou seja "lado1 && lado2 && lado3" é somado com os outros dois, como na questão que você apresentou.

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!