//verifica se os lados informados atendem à condição de
existência de um triângulo (ver pré-requisitos) enum Verificacao ETriangulo(int lado1, int lado2, int lado3) { //retorna um dos valores da enumeração Verificacao if((abs(lado2-lado3) < lado1 && lado2+lado3 > lado1) && (abs(lado1-lado3) < lado2 && lado1+lado3 > lado2) && (abs(lado1-lado2) < lado3 && lado1+lado2 > lado3)){
return verdadeiro; } return falso;
// para o operador ternário: a? b : c se a é veradeira, executa
b, se não, executa c enum TiposT TipoTriangulo(int lado1, int lado2, int lado3){ //retorna um dos valores da enumeração TiposT return ETriangulo(lado1, lado2, lado3)? (lado1 == lado2 && lado2 == lado3)? equilatero : (lado1 == lado2 || lado1 == lado3 || lado2 == lado3)? isosceles : (lado1!= lado2 && lado2 != lado3 && lado1!= lado3)? escaleno : naoTriangulo : naoTriangulo; }
int main() { int lado1, lado2, lado3;
printf("informe os lados do triangulo: ");
scanf("%d%d%d", &lado1, &lado2, &lado3); //grava 3 números inteiros nos endereços das variaveis em questão, na ordem em que foram informados
int resultado = TipoTriangulo(lado1, lado2, lado3); //o tipo
de triangulo será gravado na variável inteira resultado
// de acordo com o triangulo armazenado na variável
resultado, imprime qual é o tipo de triângulo. if(resultado == equilatero) printf("\nTRIANGULO EQUILATERO"); if(resultado == isosceles) printf("\nTRIANGULO ISOSCELES"); if(resultado == escaleno) printf("\nTRIANGULO ESCALENO"); if(resultado == naoTriangulo) printf("\nNAO E TRIANGULO");