Desenvolva um programa em
que leia 3 coordenadas bi-dimensionais (
), e calcule:
- o valor dos 3 lados (L1, L2, L3) do triângulo (ponto 1 terá seu lado oposto ao ângulo). O lado pode ser calculado pela Distancia Euclideana.
- o valor dos 3 ângulos (a1, a2, a3) (angulo 1 será sempre o do ponto 1 )
- a área A do triângulo formado pode ser calculado pelo teorema de Herón;
Passo 1
O enunciado pede um programa em C
que leia três pontos no plano, calcule os comprimentos dos lados do triângulo formado por esses pontos, os ângulos internos correspondentes e, por fim, a área usando o teorema de Herón. O que vamos precisar:
- Distância euclidiana entre dois pontos para os lados.
- Lei dos cossenos para os ângulos.
- Fórmula de Herón para a área.
Passo 2
Calcular os comprimentos
. Sejam os pontos
,
,
. O lado
é o oposto ao ponto
, ou seja, a distância entre os pontos
e
:
de modo análogo
Passo 3
Calcular os ângulos
pela lei dos cossenos. Por exemplo, o ângulo em
(ângulo
) satisfaz
logo
Os outros ângulos vêm trocando índices de modo similar.
Passo 4
Calcular a área
pelo teorema de Herón. Primeiro o semiperímetro
depois
Passo 5
Implementar o programa em C
:
- Ler seis valores de ponto flutuante para as coordenadas.
- Fazer as contas acima usando funções de
<cmath>
. - Converter radianos em graus multiplicando por
. - Imprimir os resultados.
Resposta
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
int main() {
double x1, y1, x2, y2, x3, y3;
// Leitura das coordenadas
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
// Cálculo dos lados
double L1 = sqrt((x3 - x2)*(x3 - x2) + (y3 - y2)*(y3 - y2));
double L2 = sqrt((x3 - x1)*(x3 - x1) + (y3 - y1)*(y3 - y1));
double L3 = sqrt((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1));
// Constante PI
const double PI = acos(-1.0);
// Lei dos cossenos para os ângulos em graus
double a1 = acos((L2*L2 + L3*L3 - L1*L1) / (2 * L2 * L3)) * 180.0 / PI;
double a2 = acos((L1*L1 + L3*L3 - L2*L2) / (2 * L1 * L3)) * 180.0 / PI;
double a3 = acos((L1*L1 + L2*L2 - L3*L3) / (2 * L1 * L2)) * 180.0 / PI;
// Área pelo teorema de Herón
double s = (L1 + L2 + L3) / 2.0;
double A = sqrt(s * (s - L1) * (s - L2) * (s - L3));
// Saída formatada
cout << fixed << setprecision(4);
cout << "L1= " << L1 << "\n";
cout << "L2= " << L2 << "\n";
cout << "L3= " << L3 << "\n";
cout << "a1= " << a1 << "\(\circ\)\n";
cout << "a2= " << a2 << "\(\circ\)\n";
cout << "a3= " << a3 << "\(\circ\)\n";
cout << "Area = " << A << "\n";
return 0;
}