Dados três valores A , B e C , construa um programa em C para verificar se estes valores podem ser valores dos lados de um triângulo, e se for um triângulo retângulo, determinar (imprimir) os seus ângulos internos.

Passo 1

O programa em C deve receber três valores reais A, B e C. Primeiro vamos verificar se eles satisfazem as desigualdades de existência de um triângulo:
A + B > C,\quad A + C > B,\quad B + C > A.
Se não satisfizerem, não formam triângulo. Caso formem, teste se é triângulo retângulo aplicando o teorema de Pitágoras ao maior lado. Se for retângulo, calcule os três ângulos internos (em graus) usando a Lei dos Cossenos:
\alpha = \operatorname{arccos}\!\bigl(\frac{b^2 + c^2 - a^2}{2bc}\bigr)\times\frac{180}{\pi},
e analogamente para os outros dois.

Passo 2

Verificação da existência de triângulo:
  • Identificar a, b, c como os valores lidos.
  • Checar se (a+b>c) e (a+c>b) e (b+c>a).
  • Se alguma falhar, imprimir mensagem de “não forma triângulo” e encerrar.

Passo 3

Teste de retângulo:
  • Encontrar o maior lado, chamar de h, e os outros dois de x e y.
  • Verificar se \lvert h^2 - (x^2 + y^2)\rvert < \varepsilon (com \varepsilon pequeno, e.g.\ 1\text{e-}9) para compensar erros de ponto flutuante.
  • Se não for retângulo, imprimir “não é triângulo retângulo” e encerrar.

Passo 4

Cálculo dos ângulos internos (em graus) quando for retângulo:
  • Se h for o lado oposto a \gamma, então sabemos \gamma=90^\circ.
  • Calcular \alpha e \beta pelas fórmulas:
\alpha = \operatorname{arccos}\!\bigl(\frac{b^2 + c^2 - a^2}{2bc}\bigr)\times\frac{180}{\pi},
\beta = 180^\circ - \alpha - 90^\circ.
Ou, de modo simétrico, usar sempre a lei dos cossenos para cada um.

Passo 5

Estrutura geral do programa:
  1. Fazer #include <stdio.h> e #include <math.h>.
  2. Ler A, B e C via scanf.
  3. Aplicar os passos acima.
  4. Imprimir mensagens e, no caso do retângulo, os três ângulos com printf("%.2f ", angulo);.

Resposta

#include <stdio.h>
#include <math.h>

int main() {
 double A, B, C;
 const double EPS \(=1\)e-9;
 // Leitura dos lados
 scanf("%lf %lf %lf", &A, &B, &C);

 // Passo 2: checar existência de triângulo
 if (A + B <= C || A + C <= B || B + C <= A) {
 printf("Nao forma triangulo
");
 return 0;
 }

 // Identificar hipotenuza candidata
 double h = A, x = B, y = C;
 if (B > h) { h = B; x = A; y = C; }
 if (C > h) { h = C; x = A; y = B; }

 // Passo 3: testar retângulo
 if (fabs(h*h - (x*x + y*y)) > EPS) {
 printf("Nao eh triangulo retangulo
");
 return 0;
 }

 // Passo 4: calcular ângulos internos
 // ângulo oposto a h é 90 graus
 double gamma \(=90.0\);
 // ângulo oposto a x
 double alpha = acos((y*y + h*h - x*x) / (2 * y * h)) * 180.0 / acos(-1.0);
 // ângulo oposto a y
 double beta \(=180.0\) - alpha - gamma;

 // Impressão dos ângulos
 printf("Angulo oposto ao lado de comprimento %.2f: %.2f graus
", x, alpha);
 printf("Angulo oposto ao lado de comprimento %.2f: %.2f graus
", y, beta);
 printf("Angulo oposto ao lado de comprimento %.2f: %.2f graus
", h, gamma);

 return 0;
}

Exercícios relacionados