diff --git a/task4_v2/task4_v2/class.cpp b/task4_v2/task4_v2/class.cpp index e28c0c1..5d756c6 100644 --- a/task4_v2/task4_v2/class.cpp +++ b/task4_v2/task4_v2/class.cpp @@ -150,4 +150,42 @@ float Trapezoid::calculate_angle(float base, float side) { // Угол между основанием и боковой стороной float diff = (base1 - base2) / 2; return atan(diff / side) * 180.0 / M_PI; // Используем арктангенс для расчёта угла +} + +/*----------------------------*/ +/* START: Class Triangle */ +/*----------------------------*/ + +Triangle::Triangle() : side(0), height(0) {} + +Triangle::Triangle(float s, float h) : side(s), height(h) {} + +Triangle::~Triangle() {} + +void Triangle::set_side(float s) { + side = s; +} + +void Triangle::set_height(float h) { + height = h; +} + +bool Triangle::is_valid_triangle() { + if (side <= 0 || height <= 0) { + cout << "Некорректные значения: стороны и высота должны быть положительными." << endl; + return false; + } + + float base = 2 * sqrt(side * side - (height * height)); + + if (side >= base + side || base >= 2 * side) { + cout << "Треугольник с такими сторонами не существует." << endl; + return false; + } + + return true; +} + +float Triangle::calculate_area() { + return 0.5 * side * height; } \ No newline at end of file diff --git a/task4_v2/task4_v2/class.h b/task4_v2/task4_v2/class.h index cdb2a3c..b7fee9d 100644 --- a/task4_v2/task4_v2/class.h +++ b/task4_v2/task4_v2/class.h @@ -47,6 +47,7 @@ class SysAdmin : public Employee { }; // расчет трапеции +//! НУЖНО ПЕРЕПИСАТЬ ФОРМУЛЫ class Trapezoid { public: Trapezoid(); @@ -78,4 +79,23 @@ class Trapezoid { float side2; // вторая боковая }; +/*----------------------------*/ +/* START: Class Triangle */ +/*----------------------------*/ +class Triangle { +public: + Triangle(); + Triangle(float side, float height); + ~Triangle(); + + void set_side(float side); + void set_height(float height); + float calculate_area(); + bool is_valid_triangle(); + +private: + float side; + float height; +}; + #endif // CLASS_H \ No newline at end of file diff --git a/task4_v2/task4_v2/task4_v2.cpp b/task4_v2/task4_v2/task4_v2.cpp index 147867e..48afd96 100644 --- a/task4_v2/task4_v2/task4_v2.cpp +++ b/task4_v2/task4_v2/task4_v2.cpp @@ -17,9 +17,11 @@ int main() { int salary[] = { 40000, 30000, 50000, 10000, 35000 }; employee.set_salary(salary, 5); - cout << "Имя: " << employee.get_name() << endl; - cout << "Фамилия: " << employee.get_last_name() << endl; - cout << "Средняя зарплата: " << employee.get_average_salary() << " рублей" << endl; +// UNCOMMENT THOSE IF YOU NEED THIS IN TERMINAL + + // cout << "Имя: " << employee.get_name() << endl; + // cout << "Фамилия: " << employee.get_last_name() << endl; + // cout << "Средняя зарплата: " << employee.get_average_salary() << " рублей" << endl; /*-----------------------*/ /* START: Class SysAdmin */ @@ -32,25 +34,45 @@ int main() { sysAdmin.add_technology("Portainer"); // мои два sysAdmin.add_technology("Docker"); // любимца - cout << "Имя системного администратора: " << sysAdmin.get_name() << endl; - cout << "Фамилия системного администратора: " << sysAdmin.get_last_name() << endl; - cout << "Средняя зарплата системного администратора: " << sysAdmin.get_average_salary() << " рублей" << endl; - cout << "Количество серверов: " << sysAdmin.get_num_servers() << endl; +// UNCOMMENT THOSE IF YOU NEED THIS IN TERMINAL - cout << "Технологии, используемые системным администратором: "; - for (const auto& tech : sysAdmin.get_technologies()) { - cout << tech << " "; - } - cout << endl; + // cout << "Имя системного администратора: " << sysAdmin.get_name() << endl; + // cout << "Фамилия системного администратора: " << sysAdmin.get_last_name() << endl; + // cout << "Средняя зарплата системного администратора: " << sysAdmin.get_average_salary() << " рублей" << endl; + // cout << "Количество серверов: " << sysAdmin.get_num_servers() << endl; + + // cout << "Технологии, используемые системным администратором: "; + // for (const auto& tech : sysAdmin.get_technologies()) { + // cout << tech << " "; + // } + // cout << endl; /*------------------------*/ /* START: Class Trapezoid */ /*------------------------*/ Trapezoid trapezoid(10.0, 6.0, 5.0, 5.0); // задаём 4 стороны - cout << "Периметр: " << trapezoid.calculate_perimeter() << endl; - cout << "Высота: " << trapezoid.calculate_height() << endl; - cout << "Площадь: " << trapezoid.calculate_area() << endl; - cout << "Угол между боковой стороной и основанием: " << trapezoid.calculate_angle(trapezoid.get_base1(), trapezoid.get_side1()) << " градусов" << endl; +// UNCOMMENT THOSE IF YOU NEED THIS IN TERMINAL + + // cout << "Периметр: " << trapezoid.calculate_perimeter() << endl; + // cout << "Высота: " << trapezoid.calculate_height() << endl; + // cout << "Площадь: " << trapezoid.calculate_area() << endl; + + // cout << "Угол между боковой стороной и основанием: " << trapezoid.calculate_angle(trapezoid.get_base1(), trapezoid.get_side1()) << " градусов" << endl; + + /*----------------------------*/ + /* START: Class Triangle */ + /*----------------------------*/ + + float side, height; + cout << "Введите длину стороны: "; + cin >> side; + cout << "Введите длину высоты, опущенной на основание: "; + cin >> height; + + Triangle triangle(side, height); + if (triangle.is_valid_triangle()) { + cout << "Площадь треугольника: " << triangle.calculate_area() << endl; + } return 0; }