Advertisement
evcamels

lr-3

Dec 24th, 2021
693
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.32 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. #include <cmath>
  4.  
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9. class triangle //класс тругольник
  10.  
  11. {
  12. private:
  13. float a, b, c;
  14.  
  15. public: // спецификатор доступа с открытыми членами
  16.     static int count;
  17. void set(float a, float b, float c) //указывает на использование переменной с плав запятой
  18.  
  19. { //то есть у класса появляются стороны
  20.  
  21. this->a = a; //указатель на переменную, хранит адрес объекта класса, через него обращаемся к полю
  22.  
  23. this->b = b;
  24.  
  25. this->c = c;
  26.  
  27. }
  28.  
  29. void _info()const
  30.  
  31. {
  32.  
  33. float p = (a + b + c) / 2; //объявляем полупериметр
  34.  
  35. cout << "Сторона а: " << a << endl; //вывод сторон треугольника
  36.  
  37. cout << "Сторона b: " << b << endl;
  38.  
  39. cout << "Сторона c: " << c << endl;
  40.  
  41. cout << "Периметр: " << a + b + c << endl; // вывод периметра
  42.  
  43. cout << "Площадь: " << sqrt(p * (p - a) * (p - b) * (p - c)) << endl; // вывод площади
  44.     count++;
  45. }
  46.  
  47. float uv_A(float uvel)const //метод увеличения сторон ( метод - это функция, привязанная к объекту)
  48. {
  49.     count++;
  50. return uvel * a;
  51.  
  52. }
  53.  
  54. float uv_B(float uvel)const
  55.  
  56. {
  57.     count++;
  58. return uvel * b;
  59.  
  60. }
  61.  
  62. float uv_C(float uvel)const
  63.  
  64. {
  65.     count++;
  66. return uvel * c;
  67.  
  68. }
  69.  
  70. void _uvel(float uvel)const
  71.  
  72. {
  73.     count++;
  74. cout << "Увеличили стороны в " << uvel << " раз: " << endl;
  75.  
  76. cout << "Сторона А: " << uv_A(uvel) << endl;
  77.  
  78. cout << "Сторона B: " << uv_B(uvel) << endl;
  79.  
  80. cout << "Сторона C: " << uv_C(uvel) << endl;
  81.  
  82. }
  83.  
  84. float angle_A()const //метод высчета углов
  85.  
  86. {
  87.     count++;
  88.     return acos ((b*b + c*c - a*a) / (2*b*c)) * 180 / 3.14;
  89.  
  90. }
  91. float angle_B()const //метод высчета углов
  92.     {//формулы для высчета угла b отличается от формулы для угла А поэтому у нас 2 разные функции
  93.         count++;
  94.         return acos ((a*a + c*c - b*b) / (2*a*c)) * 180 / 3.14;
  95.     }
  96.  
  97. void _angle()const
  98.  
  99. {
  100.  
  101. cout << "Угол А: " << angle_A () << endl;
  102.  
  103. cout << "Угол B: " << angle_B() << endl;
  104.  
  105. cout << "Угол С: " << 180 - (angle_A()+angle_B()) << endl;
  106.     count++;
  107. }
  108.     ~triangle(){count--;}
  109.     static int getNumber(){
  110.         return count;
  111.     }
  112.  
  113. };
  114. int triangle::count = 0;
  115.  
  116. int main() {
  117.  
  118. setlocale(LC_ALL, "rus");
  119.  
  120. triangle tr,tr1; //вызов класса
  121. float a, b, c, d ,e , f;
  122. cout << "Введите стороны треугольника 1: ";
  123.  
  124. cin >> a >> b >> c; // ввод сторон
  125. cout << "Введите стороны треугольника 2: ";
  126.     cin >> d >> e >> f;
  127. tr.set(a, b, c);
  128.     tr1.set(d,e,f);
  129. tr._info(); //вызов инфо
  130.     tr1._info();
  131. cout << "Введите в какой кол-во раз увеличить стороны: ";
  132.  
  133. float u;
  134.  
  135. cin >> u;
  136.  
  137. tr._uvel(u); //вызов увел
  138.     tr1._uvel(u);
  139. tr._angle(); //вызов углов
  140.     tr1._angle();
  141.     tr.~triangle();
  142.     tr1.~triangle();
  143.     cout << "Счетчик 1: " << tr.getNumber() << endl;
  144.     cout << "Счетчик 2: " << tr1.getNumber() << endl;
  145. return 0;
  146.  
  147. }
  148.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement