Описать класс "Треугольник" (Изменить готовую задачу))

Описать класс "Треугольник", который определяет эту геометрическую фигуру посредством указанием длины одной из его сторон и прилежащими к ней углами (углы задаются в градусах). Класс должен содержать конструктор с параметрами по умолчанию, а также следующие методы: вывод информации о длинах сторон треугольника; изменение длин сторон; определение углов, высот и площади треугольника. Предусмотреть проверку существования треугольника с заданными сторонами (при задании в конструкторе и при изменении сторон посредством соответствующего метода).Есть готовая программа, но там такое условие: "геометрическая фигура определяется посредством ввода длин трех его сторон" а,мне нужно " посредством указанием длины одной из его сторон и прилежащими к ней углами (углы задаются в градусах)."
#include <stdexcept>
#include <iostream>
#include <cmath>
 
const ****** PI = 3.1415926535897932384626433832795;
 
class Triangle {
 public:
 Triangle() : a(0), b(0), c(0) {}
 Triangle(const ****** &a, const ****** &b, const ****** &c)
 : a(a), b(b), c(c) {
 assertExists(a, b, c);
 }
 const ****** &getA() const { return a; }
 const ****** &getB() const { return b; }
 const ****** &getC() const { return c; }
 void setA(const ****** &a) {
 assertExists(a, b, c);
 this->a = a;
 }
 void setB(const ****** &b) {
 assertExists(a, b, c);
 this->b = b;
 }
 void setC(const ****** &c) {
 assertExists(a, b, c);
 this->c = c;
 }
 ****** getAngleA() const {
 return acos((pow(b, 2.0) + pow(c, 2.0) - pow(a, 2.0)) /
 (2.0 * c * b)) * 180 / PI;
 }
 ****** getAngleB() const {
 return acos((pow(a, 2.0) + pow(c, 2.0) - pow(b, 2.0)) /
 (2.0 * a * c)) * 180 / PI;
 }
 ****** getAngleC() const {
 return acos((pow(a, 2.0) + pow(b, 2.0) - pow(c, 2.0)) /
 (2.0 * a * b)) * 180 / PI;
 }
 ****** getHeightA() const {
 return (2 * getArea()) / a;
 }
 ****** getHeightB() const {
 return (2 * getArea()) / b;
 }
 ****** getHeightC() const {
 return (2 * getArea()) / c;
 }
 ****** getPerimeter() const {
 return a + b + c;
 }
 ****** getArea() const {
 ****** p = getPerimeter() / 2.0;
 return sqrt(p * (p - a) * (p - b) * (p - c));
 }
 bool isPossible() const { return isPossible(a, b, c); }
 static bool isPossible(const ****** &a, const ****** &b,
 const ****** &c) {
 return (a < b + c) && (b < a + c) && (c < a + b);
 }
 private:
 void assertExists(const ****** &a, const ****** &b, const ****** &c) {
 if (!isPossible(a, b, c)) {
 throw std::runtime_error("triangle is not possible");
 }
 }
 ****** a, b, c;
};
 
std::ostream &operator<<(std::ostream &stream, const Triangle &t) {
 return stream << "Triangle{" <<
 "a=" << t.getA() << ",b=" << t.getB() << ",c=" << t.getC() <<
 ((t.isPossible()) ? ",possible" : ",not_possible") <<
 ",angleA=" << t.getAngleA() << ",angleB=" << t.getAngleB() <<
 ",angleC=" << t.getAngleC() << ",heightA=" << t.getHeightA() <<
 ",heightB=" << t.getHeightB() << ",heightC=" << t.getHeightC() <<
 ",area=" << t.getArea() << "}";
};
 
 
int main(int argc,char **argv) {
 try {
 std::cout << Triangle(2, 2, 7);
 } catch (std::exception &e) {
 std::cout << e.what() << std::endl;
 }
 
 try {
 std::cout << Triangle(2, 2, 2);
 } catch (std::exception &e) {
 std::cout << e.what() << std::endl;
 }
 
 std::cin.get();
 return 0;
}
2 ответа

Пожалуйста помогите исправить условие


Пожалуйста помогите исправить условие
Пожалуйста помогите исправить условие