Advertisement
evcamels

lab-7_13

Dec 12th, 2021
802
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.97 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. #include <vector>
  4. using namespace std;
  5. class triangle{
  6.     double a,b,c;
  7. public:
  8.     void set(double a, double b, double c){
  9.         this->a = a;
  10.         this->b = b;
  11.         this->c = c;
  12.     }
  13.     void _info(){
  14.         cout << "Сторона а: " << a << endl;
  15.         cout << "Сторона b: " << b << endl;
  16.         cout << "Сторона c: " << c << endl;
  17.         cout << "Периметр: " << a+b+c << endl;
  18.         cout << "Площадь: " << _sqrt() << endl;
  19.     }
  20.     void _uvel(double uvel){
  21.         cout << "Увеличили а в " << uvel << " раз: "<< a*uvel << endl;
  22.         cout << "Увеличили b в " << uvel << " раз: "<< b*uvel << endl;
  23.         cout << "Увеличили c в " << uvel << " раз: "<< c*uvel << endl;
  24.     }
  25.     void _angle(){
  26.         cout << "Угол А: " << acos((b*b+c*c-a*a)/(2*b*c)) * 180 / M_PI << endl;
  27.         cout << "Угол B: " << acos((a*a+c*c-b*b)/(2*a*c)) * 180 / M_PI<< endl;
  28.         cout << "Угол С: " << acos((a*a+b*b-c*c)/(2*a*b)) * 180 / M_PI<< endl;
  29.     }
  30.     double _sqrt(){
  31.         double p = (a+b+c)/2;
  32.         return (double)sqrt(p*(p-a)*(p-b)*(p-c));
  33.     }
  34. };
  35. class okr:public triangle{
  36. private:
  37.     double radius1, radius2;
  38. public:
  39.     void sett(double radius1, double radius2){
  40.         this->radius1 = radius1;
  41.         this->radius2 = radius2;
  42.     }
  43.     double r1(){return radius1;}
  44.     double r2(){return radius2;}
  45.     void _info_okr(){
  46.         cout << "Длина окружности: " << lenght1() << endl;
  47.         cout << "Площадь окружности: " << square1() << endl;
  48.     }
  49.     double lenght1(){
  50.         return (double)3.14*2*radius1;
  51.     }
  52.     double square1(){
  53.         return (double)3.14*radius1*radius1;
  54.     }
  55.     double lenght2(){
  56.         return (double)3.14*2*radius2;
  57.     }
  58.     double square2(){
  59.         return (double)3.14*radius2*radius2;
  60.     }
  61. };
  62. class ravn_triangle: public okr{
  63. private:
  64.     double a,b;
  65. public:
  66.     void set1(double a, double b){
  67.         this->a = a;
  68.         this->b = b;
  69.     }
  70.     void _info1(){
  71.         double p = (a+b+b)/2;
  72.         cout << "Сторона а: " << a << endl;
  73.         cout << "Сторона b: " << a << endl;
  74.         cout << "Сторона c: " << b << endl;
  75.         cout << "Периметр: " << a+b+b << endl;
  76.         cout << "Площадь: " << (double)sqrt(p*(p-a)*(p-b)*(p-b)) << endl;
  77.         cout << "Длина описанной окружности: " << lenght1() << endl;
  78.         cout << "Площадь описанной окружности: " << square1() << endl;
  79.         cout << "Длина вписанной окружности: " << lenght2() << endl;
  80.         cout << "Площадь вписанной окружности: " << square2() << endl;
  81.  
  82.     }
  83.     double _sqrt1(){
  84.         double p = (a+b+b)/2;
  85.         return sqrt(p*(p-a)*(p-b)*(p-b));
  86.     }
  87.     void changes(){
  88.         cout << "Радиус описанной окружности: " << r1()*r2() << endl;
  89.         cout << "Длина основания: " << r2() * b << endl;
  90.     }
  91. };
  92. int main(){
  93.     triangle tr;
  94.     ravn_triangle tr1;
  95.     vector <double> arr;
  96.     double n,m,a,b,c;
  97.     cout << "Введите кол-во треугольников: ";
  98.     cin >> n;
  99.     cout << "Введите кол-во равнобедренных треугольников: ";
  100.     cin >> m;
  101.     int count = 0;
  102.     double radius1, radius2;
  103.     cout << "Введите радиус описанной и вписанной окружности: ";
  104.     cin >> radius1 >> radius2;
  105.     tr1.sett(radius1, radius2);
  106.     for(int i=0;i<n;i++){
  107.         cout << "Введите стороны треугольника " << i+1 << ": ";
  108.         cin >> a >> b >> c;
  109.         tr.set(a,b,c);
  110.         count+=tr._sqrt();
  111.         tr._info();
  112.     }
  113.     cout << "Средняя площадь треугольников: " << count/n << endl;
  114.     int d,e;
  115.     int count1 = 999999;
  116.     for(int i=0;i<m;i++){
  117.         cout << "Введите стороны равнобедренного треугольника " << i+1 << ":";
  118.         cin >> d >> e;
  119.         tr1.set1(d,e);
  120.         if(tr1._sqrt1() < count1) {
  121.             count1 = tr1._sqrt1();
  122.         }
  123.         tr1._info1();
  124.     }
  125.     cout << "Минимальная площадь равнобедренного треугольника: " << count1;
  126.     cout << endl;
  127.     tr1.changes();
  128.     return 0;
  129. }
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement