Daniel de Souza Melo Posted April 17, 2023 Posted April 17, 2023 #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 1 Quote
Orsted Posted October 15, 2024 Posted October 15, 2024 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😃 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.