Advertisement
evcamels

lr-2

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