En el post anterior vimos cómo saber si un triángulo es rectángulo, acutángulo u obtusángulo en C++, y les anticipé que harÃa una nueva versión del mismo programa pero que nos calculara además los ángulos del triángulo.
El programa es este.
#include<math.h> #include<iostream> using namespace std; #define PI 3.14159265 // nuNcA cAmbieZz we!! int main() { float a, b, c, A, B, C; cout << "Introduce lado a: "; cin >> a; cout << "Introduce lado b: "; cin >> b; cout << "Introduce lado c: "; cin >> c; A = acos((b*b+c*c-a*a)/(2*b*c))*180/PI; B = acos((a*a+c*c-b*b)/(2*a*c))*180/PI; C = acos((a*a+b*b-c*c)/(2*a*b))*180/PI; if(A == 90 || B == 90 || C == 90) cout << "El triangulo es rectangulo. "; if(A < 90 && B < 90 && C < 90) cout << "El triangulo es acutangulo. "; if(A > 90 || B > 90 || C > 90) cout << "El triangulo es obtusangulo. "; cout << "\nY sus angulos son: A:" << A << " , B:" << B << " y C:" << C; cin.get();cin.get(); }
Para calcular los ángulos utilizamos la ley de cosenos, de hecho en el anterior también lo utilizamos pero no completamente (la ley de cosenos es una ‘ampliación’ del teorema de pitágoras). La ley de cosenos la vemos comúnmente como:
a2 = b2 + c2 -2(b*c)*cos(A)
Si la despejamos en cos(A), nos queda:
cos(A) = (b2 + c2 - a2) / 2(b*c)
Si despejamos A (o sea el ángulo), obtenemos:
A = arccos(b2 + c2 - a2 / 2(b*c))
Que es lo que utilizamos calcular los ángulos, lamentablemente la función que nos da C++ en su librerÃa math.h, acos() nos devuelve el resultado en radianes. Para convertirlo a grados solo tenemos que multiplicar el resultado por 180/PI. Ahora que ya tenemos los tres ángulos de nuestro triángulo, es facilÃsimo saber cuando es cada tipo de triángulo.
La función acos() está en la librerÃa math.h y sirve para encontrar el arco coseno. En esta librerÃa hay muchas funciones muy útiles: math.h
Otro detalle sencillo pero que no habÃamos visto es el asunto de PI. Al principio del programa nos encontramos con:
#define PI 3.14159265
Esto significa que estamos declarando una constante con el nombre PI y con un valor de 3.14159265. Una constante, como su nombre lo indica, nunca cambia a lo largo del programa.
Bueno, pues fue un programa bastante entretenido, me gustó hacerlo :)
