Найти углы и стороны треугольника по двум сторонам и углу между ними
Помогите с программой. Выводит неверные углы, хотя формулы перепроверял уже с десяток раз.
Ввод/Ожидаемый Результат
Стороны 5 и 12; угол 90/Стороны 5, 12, 13; Углы 90, 67 и 22;
Стороны 8 и 11; угол 32/Стороны 8, 11, 6; Углы 32, 45, 102;
#include <string>
#include <cmath>
using namespace std;
class Triangle
{
private:
int
a, // сторона a
b, // сторона b
c, // сторона c
angle_a, // угол a
angle_b, // угол b
angle_c; // угол c
public:
void setTriangle(int side_a1, int side_a2, int angle_a1) // задаём стороны треугольника
{
a = side_a1; // инициализация a
b = side_a2; // инициализация b
angle_c = angle_a1; // инициализация угла C
c = sqrt(pow(a,2) + pow(b,2) - 2*a*b*cos(angle_c) * M_PI / 180); // расчёт c
angle_b = acos((pow(a,2)+pow(c,2)-pow(b,2))/(2*a*c)) *180/M_PI; // расчёт угла b
angle_a = acos((pow(b,2)+pow(c,2)-pow(a,2))/(2*b*c)) *180/M_PI; // расчёт угла a
/* if ((angle_c+angle_b>= 180)) //проверка треугольника
{
cout << "Такой треугольник не существует" << endl;
a = NULL; // сброс
b = NULL;
c = NULL;
angle_a = NULL;
angle_b = NULL;
angle_c = NULL;
}*/
}
void getTriangleInfo() // отобразить все стороны и углы треугольника
{
cout << "Стороны: \n" "a=" << a << "\nb=" << b << "\nc=" << c << "\n" "угол a=" << angle_a << "\nугол b=" << angle_b << "\nугол c=" << angle_c << endl;
}
}; // конец объявления класса Triangle
int main(int argc, char* argv[])
{
setlocale(LC_ALL, "rus"); // установка локали
int a, b, angle_c;
cout << "задайте треугольник!\n";
cout << "a: "; cin >> a;
cout << "b: "; cin >> b;
cout << "угол c: "; cin >> angle_c;
Triangle objCppstudio; // объявление объекта
objCppstudio.setTriangle(a, b, angle_c); // задаём треугольник
objCppstudio.getTriangleInfo(); // выводим треугольник
return 0;
}```
Ответы (1 шт):
Автор решения: MBo
→ Ссылка
Углы должны быть float/double, да и стороны, скорее всего, тоже.
А преобразование в радианы должно применяться к углу, а не к хз чему:
c = sqrt(a*a + b*b - 2*a*b*cos(angle_c * M_PI / 180));
P.S. И оставшиеся углы, как мне кажется, проще по теореме синусов посчитать, но это не ошибка.