Jump to content

Recommended Posts

Posted

#include <stdio.h>

int main(){
    
    float l1,l2,l3;
    
    printf("Entre com os tres lados do triangulo: \n");
    scanf("%f,%f,%f",&l1,&l2,&l3);
    
    l1==l2==l3;
    
    if(l1=l2=l3){
        printf("Triangulo Equilatero.");
    }else if((l1=l2!=l3) || (l2=l3!=l1)){
        printf("Triangulo Isosceles.");
    }else if((l1!=l2!=l3) && ((l1<(l2+l3)) || (l2<(l1+l3)) || (l3<(l1+l2)))){
            printf("Triangulo Escaleno.");
    }else{
            printf("Triangulo Invalido.");
        }
      
        return 0;
    }    

 

o resultado sempre está dando Triangulo invalido
 

  • Agradecer 1
  • 1 year later...
Posted

Estava dando uma olhada nos tópicos e embora o post seja um pouco antigo talvez a solução ainda ajude alguém no futuro.

O primeiro ponto é o scanf  com você usou "%f,%f,%f" ele espera que o input também esteja com virgula. 

A primeira correção seria remover a necessidade da virgula uma vez que cada numero vai ser em uma linha diferente.

scanf("%f %f %f", &l1, &l2, &l3)

O segundo ponto é a atribuição no lugar de igualdade:

if(l1=l2=l3)

O operador  = é um operador simples de atribuição a variável, exemplo A = 10.

Enquanto o operador ==  é o operador de comparação de igualdade.

A = 10

B = 10 

if (A == B) {
    printf("A e B são iguais.\n");
} else {
    printf("A e B são diferentes.\n");
}

Agora vamos ao triangulo, via de regra existe um teorema pra validar se algo é um triangulo chamado "condição de existência de triangulo".

"Dados três segmentos de reta distintos, se a soma das medidas de dois deles é sempre maior que a medida do terceiro, então, eles podem formar um triângulo"

if (l1 + l2 > l3 && l2 + l3 > l1 && l1 + l3 > l2)

l1 + l2 > l3: A soma dos lados l1 e l2 deve ser maior que l3.

l2 + l3 > l1: A soma dos lados l2 e l3 deve ser maior que l1

l1 + l3 > l2: A soma dos lados l1 e l3 deve ser maior que l2

Satisfeita a condição de existencia temos um triangulo.

Um triangulo equilatero tem os 3 lados iguais

l1 == l2 && l2 == l3

Um triangulo isósceles tem dois lados iguais e um diferente.

(l1 == l2 || l2 == l3 || l1 == l3)

E um triangulo escaleno tem todos os lados diferentes.

Portanto podemos fazer o seguinte: 

if (l1 + l2 > l3 && l2 + l3 > l1 && l1 + l3 > l2) {
        if (l1 == l2 && l2 == l3) {
            printf("Triangulo Equilatero.");
        } else if (l1 == l2 || l2 == l3 || l1 == l3) {
            printf("Triangulo Isosceles.");
        } else {
            printf("Triangulo Escaleno.");
        }
    } else {
        printf("Não é um triangulo.");
    }

Espero ter ajudado😃

  • Agradecer 1

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...