Preparar um algoritmo e um programa em C para ler os comprimentos dos três lados de um triângulo (
, e
) e determinar que tipo de triângulo temos, com base nos seguintes casos. Sejam A o maior dos lados de
, e
e Be C os outros dois lados. Então:
nenhum triangulo é formado
Se
um triangulo retangulo é formado,
Se
um triangulo obtusangulo é formado
Se
um triangulo acutangulo é formado
Se
Se
Se
Passo 1
O enunciado pede para ler três comprimentos de lados de um triângulo (S₁, S₂, S₃) e, usando estruturas condicionais, determinar se eles formam um triângulo e, em caso afirmativo, classificar esse triângulo em retângulo, obtusângulo ou acutângulo. Vamos precisar saber comparar valores e usar a relação de Pitágoras (
A² = B² + C²
) para decidir o tipo.
Passo 2
Primeiro, identificamos o maior lado entre S₁, S₂ e S₃ e chamamos esse maior lado de A. Os dois restantes serão B e C. Isso nos garante que a condição de existência do triângulo e a comparação pitagórica fiquem sempre em relação ao maior lado.
Em seguida, verificamos se A ≥ B + C. Se isso ocorrer, nenhum triângulo é formado, pois a soma dos dois menores lados não alcança o maior.
Em seguida, verificamos se A ≥ B + C. Se isso ocorrer, nenhum triângulo é formado, pois a soma dos dois menores lados não alcança o maior.
Passo 3
Se A < B + C, então o triângulo existe. Calculamos A² e a soma B² + C² e comparamos:
— Se
— Se
A² = B² + C²
, é um triângulo retângulo.
— Se
— Se
A² > B² + C²
, é um triângulo obtusângulo.
— Se
— Se
A² < B² + C²
, é um triângulo acutângulo.
Passo 4
Por fim, basta implementar esse fluxo em pseudocódigo ou direto em C, usando scanf para ler os lados, if–else para as comparações e printf para exibir o tipo de triângulo.
Resposta
#include <stdio.h>
int main() {
double S1, S2, S3;
double A, B, C;
double S1, S2, S3;
double A, B, C;
// Leitura dos lados
printf("Digite os comprimentos dos três lados: \n");
scanf("%lf %lf %lf", &S1, &S2, &S3);
// Identifica o maior lado A e coloca os outros em B e C
if (S1 >= S2 && S1 >= S3) {
A = S1; B = S2; C = S3;
} else if (S2 >= S1 && S2 >= S3) {
A = S2; B = S1; C = S3;
} else {
A = S3; B = S1; C = S2;
}
// Verifica existência de triângulo
if (A >= B + C) {
printf("Nenhum triângulo formado.\n");
} else {
double A2 = A * A;
double somaBC2 = B * B + C * C;
if (A2 == somaBC2) {
printf("Triângulo retângulo.\n");
} else if (A2 > somaBC2) {
printf("Triângulo obtusângulo.\n");
} else {
printf("Triângulo acutângulo.\n");
}
}
return 0;
}