Advertisement
evcamels

lr-2

Dec 19th, 2020
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.35 KB | None | 0 0
  1. //
  2. //  main.cpp
  3. //  lr-2
  4. //
  5. //  Created by Nikita Korvyakov on 19.12.2020.
  6. //  Copyright © 2020 Nikita Korvyakov. All rights reserved.
  7. //
  8.  
  9. #include <iostream>
  10. #include <string>
  11. #include <cmath>
  12. using namespace std;
  13. class Co {
  14. public:
  15.     double a;
  16.     double b;
  17.     Co(double a, double b)
  18.         :a(a), b(b) {}
  19. };
  20. class Ch {
  21. protected:
  22.     Co A;
  23.     Co B;
  24.     Co C;
  25.     Co D;
  26. public:
  27.     Ch(Co A, Co B, Co C, Co D)
  28.         :A(A), B(B), C(C), D(D) {}
  29.     Ch()
  30.         :A(0, 0), B(0, 1), C(1, 0), D(1, 1) {}
  31.     double AB() {
  32.         double AB = pow((pow((A.a - B.a), 2) + pow((A.b - B.b), 2)), 0.5);
  33.         return AB;
  34.     }
  35.     double AC() {
  36.         double AC = pow((pow((A.a - C.a), 2) + pow((A.b - C.b), 2)), 0.5);
  37.         return AC;
  38.     }
  39.     double AD() {
  40.         double AD = pow((pow((A.a - D.a), 2) + pow((A.b - D.b), 2)), 0.5);
  41.         return AD;
  42.     }
  43.     double BC() {
  44.         double BC = pow((pow((C.a - B.a), 2) + pow((C.b - B.b), 2)), 0.5);
  45.         return BC;
  46.     }
  47.     double CD() {
  48.         double CD = pow((pow((C.a - D.a), 2) + pow((C.b - D.b), 2)), 0.5);
  49.         return CD;
  50.     }
  51.     double BD() {
  52.         double BD = pow((pow((D.a - B.a), 2) + pow((D.b - B.b), 2)), 0.5);
  53.         return BD;
  54.     }
  55.     double S() {
  56.         double p = P() / 2;
  57.         return pow((p - AB()) * (p - BC()) * (p - CD()) * (p - AD()), 0.5);
  58.     }
  59.     double P() {
  60.         return AB() + BC() + CD() + AD();
  61.     }
  62.     void print() {
  63.         cout << "AB: " << AB() << endl;
  64.         cout << "BC: " << BC() << endl;
  65.         cout << "CD: " << CD() << endl;
  66.         cout << "AD: " << AD() << endl;
  67.         cout << "диагональ АС: " << AC() << endl;
  68.         cout << "диагональ BD: " << BD() << endl;
  69.         cout << "площадь S: " << S() << endl;
  70.         cout << "периметр Р: " << P() << endl;
  71.     }
  72. };
  73. class Romb :public Ch
  74. {
  75. public:
  76.     Romb(Co A, Co B, Co C, Co D) :Ch(A, B, C, D) {}
  77.     Romb() :Ch() {}
  78.     bool check() {
  79.         if ((AB() == BC()) && (AB() == CD()) && (AB() == AD()) && (BC() == CD()) && (BC() == AD()) && (CD() == AD()))
  80.             return 1;
  81.         else
  82.             return 0;
  83.     }
  84. };
  85. int main() {
  86.     int N;//число четырехугольников
  87.     int M;//число ромбов
  88.     cout << "Введите число четырехугольников: ";
  89.     cin >> N;
  90.     cout << "Введите число ромбов: ";
  91.     cin >> M;
  92.     Ch* arr = new Ch[N];
  93.     Romb* romb = new Romb[M];
  94.     int min = 9999999;
  95.     for (int i = 1; i <= N; i++) {
  96.         cout << i << ")" << " Четырехугольник" << endl;
  97.         double a1, b1;
  98.         double a2, b2;
  99.         double a3, b3;
  100.         double a4, b4;
  101.         cout << "Введите координаты точки А: ";
  102.         cin >> a1 >> b1;
  103.         cout << "Введите координаты точки B: ";
  104.         cin >> a2 >> b2;
  105.         cout << "Введите координаты точки C: ";
  106.         cin >> a3 >> b3;
  107.         cout << "Введите координаты точки D: ";
  108.         cin >> a4 >> b4;
  109.         Co A(a1, b1), B(a2, b2), C(a3, b3), D(a4, b4);
  110.         arr[i] = Ch(A, B, C, D);
  111.         arr[i].print();
  112.         if (arr[i].S() < min) {
  113.             min = arr[i].S();
  114.         }
  115.     }
  116.     cout << "Минимальная площадь четырехугольника = " << min << endl;
  117.     double srS = 0;
  118.     for (int i = 1; i <= M; i++) {
  119.         cout << i << "." << " Ромб" << endl;
  120.         double a1, b1;
  121.         double a2, b2;
  122.         double a3, b3;
  123.         double a4, b4;
  124.         cout << "Введите координаты точки А: ";
  125.         cin >> a1 >> b1;
  126.         cout << "Введите координаты точки B: ";
  127.         cin >> a2 >> b2;
  128.         cout << "Введите координаты точки C: ";
  129.         cin >> a3 >> b3;
  130.         cout << "Введите координаты точки D: ";
  131.         cin >> a4 >> b4;
  132.         Co A(a1, b1), B(a2, b2), C(a3, b3), D(a4, b4);
  133.         romb[i] = Romb(A, B, C, D);
  134.         if (romb[i].check()) {
  135.             srS += arr[i].S();
  136.         }
  137.         else {
  138.             srS += 0;
  139.         }
  140.         romb[i].print();
  141.     }
  142.     double sr = srS / M;
  143.     cout << "Средняя площадь: " << sr << endl;
  144.     delete[]arr;
  145.     delete[]romb;
  146.     return 0;
  147. }
  148.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement