evcamels

lab_4-var_6

Dec 9th, 2021
765
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <string>
  3. #include <cmath>
  4. using namespace std;
  5. class triungle{
  6. public:
  7.     double a,b,c,x1,x2,y1,y2,z1,z2;
  8.     triungle(){}
  9.     triungle(double x1, double x2, double y1, double y2, double z1, double z2){
  10.         this->x1 = x1;
  11.         this->x2 = x2;
  12.         this->y1 = y1;
  13.         this->y2 = y2;
  14.         this->z1 = z1;
  15.         this->z2 = z2;
  16.     }
  17.     void st(){
  18.         a = abs(sqrt(x1*x1+x2*x2));
  19.         b = abs(sqrt(y1*y1+y2*y2));
  20.         c = abs(sqrt(z1*z1+z2*z2));
  21.     }
  22.     void enc(){
  23.         if((a+b) > c && (a+c) > b && (b+c) > a){
  24.             cout << "Треугольник существует!" << endl;
  25.         }else cout << "Треугольник не существует!" << endl;
  26.     }
  27.     void inf(){
  28.         cout << "Сторона А: " << a << endl;
  29.         cout << "Сторона B: " << b << endl;
  30.         cout << "Сторона С: " << c << endl;
  31.     }
  32.     double per(){
  33.         return a+b+c;
  34.     }
  35.     double sq(){
  36.         double p = (a+b+c)/2;
  37.         double s = sqrt(p*(p-a)*(p-b)*(p-c));
  38.         return s;
  39.     }
  40.     double a_a(){
  41.         return abs(sqrt(x1*x1+x2*x2));
  42.     }
  43.     double b_b(){
  44.         return abs(sqrt(y1*y1+y2*y2));
  45.     }
  46.     double c_c(){
  47.         return abs(sqrt(z1*z1+z2*z2));
  48.     }
  49. };
  50. class ravn_triungle :public triungle{
  51. public:
  52.     ravn_triungle(double x1, double x2, double y1, double y2, double z1, double z2): triungle (x1,x2,y1,y2,z1,z2) {}
  53.     ravn_triungle():triungle(){}
  54.     void ravn_st(){
  55.         a = abs(sqrt(x1*x1+x2*x2));
  56.         b = abs(sqrt(y1*y1+y2*y2));
  57.         c = abs(sqrt(z1*z1+z2*z2));
  58.     }
  59.     bool pr(){
  60.         if(a == b && a == c && b == c){
  61.             return 1;
  62.         }else return 0;
  63.     }
  64.     double mediana;
  65.     double med(){
  66.         return (sqrt(3) * a) / 2;
  67.     }
  68.    
  69. };
  70. int main() {
  71.     int N;//число треугольников
  72.     int M;//число равнобедренных треугольников
  73.     cout << "Введите число треугольников: ";
  74.     cin >> N;
  75.     cout << endl;
  76.     cout << "Введите число равносторонних треугольников: ";
  77.     cin >> M;
  78.     cout << endl;
  79. triungle* arr = new triungle[N];
  80. ravn_triungle* arr1 = new ravn_triungle[M];
  81.     int min = 100000000;
  82. for (int i = 1; i <= N; i++) {
  83.  
  84.     cout << i << ")" << " Треугольник" << endl;
  85.     double x1,x2,y1,y2,z1,z2;
  86.     cout << "Введите координаты А: ";
  87.     cin >> x1 >> x2;
  88.     cout << endl;
  89.     cout << "Введите координаты B: ";
  90.     cin >> y1 >> y2;
  91.     cout << endl;
  92.     cout << "Введите координаты C: ";
  93.     cin >> z1 >> z2;
  94.     cout << endl;
  95.     arr[i] = triungle(x1, x2, y1, y2, z1, z2);
  96.     arr[i].inf();
  97.     cout << arr[i].per() << endl;
  98.     cout << arr[i].sq() << endl;
  99.    
  100. if (arr[i].a_a() == arr[i-1].a_a() &&arr[i].b_b() == arr[i-1].b_b() && arr[i].c_c() == arr[i-1].c_c() ){
  101.     cout << "Треугольники " << i << " и " << i-1 << " одинаковые!" << endl;
  102. }
  103.     cout << "___________________________" << endl;
  104. }
  105. double min_m = 99999.0;
  106. for (int i = 1; i <= M; i++) {
  107.  
  108.     cout << i << ")" << " Равносторонний треугольник" << endl;
  109.  
  110.     double x11,x22,y11,y22,z11,z22;
  111.    
  112.     cout << "Введите координаты А: ";
  113.     cin >> x11 >> x22;
  114.     cout << endl;
  115.     cout << "Введите координаты B: ";
  116.     cin >> y11 >> y22;
  117.     cout << endl;
  118.     cout << "Введите координаты C: ";
  119.     cin >> z11 >> z22;
  120. arr1[i] = ravn_triungle(x11,x22,y11,y22,z11,z22);
  121. if (arr1[i].pr()) {
  122.     if(arr1[i].med() < min_m){
  123.         min_m = arr1[i].med();
  124.     }
  125. }
  126.     arr1[i].inf();
  127.     cout << arr1[i].per() << endl;
  128.     cout << arr1[i].sq() << endl;
  129. }
  130.     cout << "Треугольник с наименьшей медианой: " << min << endl;
  131.  
  132. delete[]arr;
  133. delete[]arr1;
  134. return 0;
  135. }
  136.  
RAW Paste Data