Skip to content

Commit

Permalink
added class triangle because trapezoid has formula issues
Browse files Browse the repository at this point in the history
  • Loading branch information
prettyleaf committed Oct 13, 2024
1 parent 2ff0fbc commit 38b62df
Show file tree
Hide file tree
Showing 3 changed files with 96 additions and 16 deletions.
38 changes: 38 additions & 0 deletions task4_v2/task4_v2/class.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
20 changes: 20 additions & 0 deletions task4_v2/task4_v2/class.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ class SysAdmin : public Employee {
};

// расчет трапеции
//! НУЖНО ПЕРЕПИСАТЬ ФОРМУЛЫ
class Trapezoid {
public:
Trapezoid();
Expand Down Expand Up @@ -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
54 changes: 38 additions & 16 deletions task4_v2/task4_v2/task4_v2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
Expand All @@ -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;
}

0 comments on commit 38b62df

Please sign in to comment.