evcamels

lab-5_var-9

Dec 20th, 2021
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.02 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 Trap :public Chug
  63. {
  64. public:
  65. Trap(Coor A, Coor B, Coor C, Coor D) :Chug(A, B, C, D) {}
  66. Trap() :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. Trap* trap = new Trap[M];
  84. int min = 0;
  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. trap[i] = Trap(A, B, C, D);
  139. if (trap[i].proverka()) {
  140. srS += arr[i].S();
  141. }
  142. else {
  143. srS += 0;
  144. }
  145. trap[i].printinfo();
  146. }
  147. double sr = srS / M;
  148. cout << "Средняя площадь: " << sr << endl;
  149.  
  150. delete[]arr;
  151. delete[]trap;
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment