fork download
  1. // миллионная переработка.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include <iostream>
  6. using namespace std;
  7. const int MAX_N = 20;
  8.  
  9. struct Point
  10. {
  11. float x, y;
  12. };
  13.  
  14.  
  15. bool TryToFormSquare(const Point& p1, const Point& p2, const Point& p3, const Point& p4)
  16. {
  17. if (((sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)))==(sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y))))&&((sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y)))==(sqrt((p4.x-p3.x)*(p4.x-p3.x)+(p4.y-p3.y)*(p4.y-p3.y))))&&((sqrt((p4.x-p3.x)*(p4.x-p3.x)+(p4.y-p3.y)*(p4.y-p3.y)))==(sqrt((p1.x-p4.x)*(p1.x-p4.x)+(p1.y-p4.y)*(p1.y-p4.y))))&&((sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y)))==(sqrt((p4.x-p2.x)*(p4.x-p2.x)+(p4.y-p2.y)*(p4.y-p2.y)))))
  18. {return true;}
  19. else if (((sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y)))==(sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y))))&&((sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y)))==(sqrt((p4.x-p2.x)*(p4.x-p2.x)+(p4.y-p2.y)*(p4.y-p2.y))))&&((sqrt((p4.x-p2.x)*(p4.x-p2.x)+(p4.y-p2.y)*(p4.y-p2.y)))==(sqrt((p1.x-p4.x)*(p1.x-p4.x)+(p1.y-p4.y)*(p1.y-p4.y))))&&((sqrt((p2.x-p1.x)*(p2.x-p1.x)+(p2.y-p1.y)*(p2.y-p1.y)))==(sqrt((p4.x-p3.x)*(p4.x-p3.x)+(p4.y-p3.y)*(p4.y-p3.y)))))
  20. {return true;}
  21. else if (((sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y)))==(sqrt((p4.x-p2.x)*(p4.x-p2.x)+(p4.y-p2.y)*(p4.y-p2.y))))&&((sqrt((p4.x-p2.x)*(p4.x-p2.x)+(p4.y-p2.y)*(p4.y-p2.y)))==(sqrt((p3.x-p4.x)*(p3.x-p4.x)+(p3.y-p4.y)*(p3.y-p4.y))))&&((sqrt((p3.x-p4.x)*(p3.x-p4.x)+(p3.y-p4.y)*(p3.y-p4.y)))==(sqrt((p1.x-p3.x)*(p1.x-p3.x)+(p1.y-p3.y)*(p1.y-p3.y))))&&((sqrt((p1.x-p4.x)*(p1.x-p4.x)+(p1.y-p4.y)*(p1.y-p4.y)))==(sqrt((p3.x-p2.x)*(p3.x-p2.x)+(p3.y-p2.y)*(p3.y-p2.y)))))
  22. {return true;}
  23. else {return false;}
  24. }
  25. float HalfPerim(float a, float b, float c)
  26. {
  27. return ((a+b+c)/2);
  28. }
  29. float dest(const Point& p1, const Point& p2)
  30. {
  31. return (sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y)));
  32.  
  33.  
  34. }
  35. float square(const Point& p, const Point& p2, const Point& p4)
  36. {
  37. return sqrt(HalfPerim(dest(p, p2), dest(p, p4), dest(p2, p4))*((HalfPerim(dest(p, p2), dest(p, p4), dest(p2, p4))) - dest(p, p2))*((HalfPerim(dest(p, p2), dest(p, p4), dest(p2, p4))) - dest(p2, p4))*((HalfPerim(dest(p, p2), dest(p, p4), dest(p2, p4))) - dest(p, p4)));
  38.  
  39.  
  40. }
  41.  
  42.  
  43. bool IsPointInsideRect(const Point& p, const Point& p1, const Point& p2, const Point& p3, const Point& p4)
  44. {
  45.  
  46. if (((sqrt((p2.x - p1.x)*(p2.x - p1.x) + (p2.y - p1.y)*(p2.y - p1.y))) == (sqrt((p3.x - p2.x)*(p3.x - p2.x) + (p3.y - p2.y)*(p3.y - p2.y)))) && ((sqrt((p3.x - p2.x)*(p3.x - p2.x) + (p3.y - p2.y)*(p3.y - p2.y))) == (sqrt((p4.x - p3.x)*(p4.x - p3.x) + (p4.y - p3.y)*(p4.y - p3.y)))) && ((sqrt((p4.x - p3.x)*(p4.x - p3.x) + (p4.y - p3.y)*(p4.y - p3.y))) == (sqrt((p1.x - p4.x)*(p1.x - p4.x) + (p1.y - p4.y)*(p1.y - p4.y)))) && ((sqrt((p1.x - p3.x)*(p1.x - p3.x) + (p1.y - p3.y)*(p1.y - p3.y))) == (sqrt((p4.x - p2.x)*(p4.x - p2.x) + (p4.y - p2.y)*(p4.y - p2.y)))))
  47. {
  48. if ((square(p, p2, p4)) >= (square(p, p1, p3)))
  49. {
  50. if ((square(p, p2, p4)) <= ((dest(p1, p2)*dest(p1, p2)) / 2))
  51. {
  52. return true;
  53. }
  54. else return false;
  55.  
  56. }
  57. else
  58. {
  59. if ((square(p, p2, p4)) < (square(p, p1, p3)))
  60. {
  61. if ((square(p, p1, p3)) <= ((dest(p1, p2)*dest(p1, p2)) / 2))
  62. {
  63. return true;
  64. }
  65. else return false;
  66. }
  67.  
  68. }
  69. }
  70. else if (((sqrt((p1.x - p3.x)*(p1.x - p3.x) + (p1.y - p3.y)*(p1.y - p3.y))) == (sqrt((p3.x - p2.x)*(p3.x - p2.x) + (p3.y - p2.y)*(p3.y - p2.y)))) && ((sqrt((p3.x - p2.x)*(p3.x - p2.x) + (p3.y - p2.y)*(p3.y - p2.y))) == (sqrt((p4.x - p2.x)*(p4.x - p2.x) + (p4.y - p2.y)*(p4.y - p2.y)))) && ((sqrt((p4.x - p2.x)*(p4.x - p2.x) + (p4.y - p2.y)*(p4.y - p2.y))) == (sqrt((p1.x - p4.x)*(p1.x - p4.x) + (p1.y - p4.y)*(p1.y - p4.y)))) && ((sqrt((p2.x - p1.x)*(p2.x - p1.x) + (p2.y - p1.y)*(p2.y - p1.y))) == (sqrt((p4.x - p3.x)*(p4.x - p3.x) + (p4.y - p3.y)*(p4.y - p3.y)))))
  71. {
  72. {
  73. if ((square(p, p1, p2)) >= (square(p, p3, p4)))
  74. {
  75. if ((square(p, p1, p2)) <= ((dest(p1, p3)*dest(p1, p3)) / 2))
  76. {
  77. return true;
  78. }
  79. else return false;
  80.  
  81. }
  82. else
  83. {
  84. if ((square(p, p1, p2)) < (square(p, p3, p4)))
  85. {
  86. if ((square(p, p1, p2)) <= ((dest(p1, p3)*dest(p1, p3)) / 2))
  87. {
  88. return true;
  89. }
  90. else return false;
  91. }
  92.  
  93. }
  94. }
  95. }
  96. else if (((sqrt((p1.x - p2.x)*(p1.x - p2.x) + (p1.y - p2.y)*(p1.y - p2.y))) == (sqrt((p4.x - p2.x)*(p4.x - p2.x) + (p4.y - p2.y)*(p4.y - p2.y)))) && ((sqrt((p4.x - p2.x)*(p4.x - p2.x) + (p4.y - p2.y)*(p4.y - p2.y))) == (sqrt((p3.x - p4.x)*(p3.x - p4.x) + (p3.y - p4.y)*(p3.y - p4.y)))) && ((sqrt((p3.x - p4.x)*(p3.x - p4.x) + (p3.y - p4.y)*(p3.y - p4.y))) == (sqrt((p1.x - p3.x)*(p1.x - p3.x) + (p1.y - p3.y)*(p1.y - p3.y)))) && ((sqrt((p1.x - p4.x)*(p1.x - p4.x) + (p1.y - p4.y)*(p1.y - p4.y))) == (sqrt((p3.x - p2.x)*(p3.x - p2.x) + (p3.y - p2.y)*(p3.y - p2.y)))))
  97. {
  98. {
  99. if ((square(p, p2, p3)) >= (square(p, p1, p4)))
  100. {
  101. if ((square(p, p2, p3)) <= ((dest(p1, p2)*dest(p1, p2)) / 2))
  102. {
  103. return true;
  104. }
  105. else return false;
  106.  
  107. }
  108. else
  109. {
  110. if ((square(p, p2, p3)) < (square(p, p1, p4)))
  111. {
  112. if ((square(p, p2, p3)) <= ((dest(p1, p2)*dest(p1, p2)) / 2))
  113. {
  114. return true;
  115. }
  116. else return false;
  117. }
  118.  
  119. }
  120. }
  121. }
  122. else { return false; }
  123. }
  124.  
  125. int main()
  126. {
  127. // Point points[MAX_N];
  128.  
  129. int N = 0;
  130. cout<<"input point\n";
  131. cin>>N;
  132. Point *points=new Point[N];
  133. cout<<"Please, enter N points:\n";
  134. for(int i=0;i<N;i++)
  135. {cin>>points[i].x>>points[i].y;}
  136.  
  137. int maxPointsInRect = -1;
  138. float maxPoint1x = 0;
  139. float maxPoint1y = 0;
  140. float maxPoint2x = 0;
  141. float maxPoint2y = 0;
  142. float maxPoint3x = 0;
  143. float maxPoint3y = 0;
  144. float maxPoint4x = 0;
  145. float maxPoint4y = 0;
  146.  
  147.  
  148. for (int i1 = 0; i1 < N-3; ++i1)
  149. for (int i2 = i1+1; i2 < N-2; ++i2)
  150. for (int i3 = i2+1; i3 < N-1; ++i3)
  151. for (int i4 = i3+1; i4 < N; ++i4)
  152. if (TryToFormSquare(points[i1], points[i2], points[i3], points[i4]))
  153. {
  154. cout << "Found rectange with points. Coordinates of points: " << points[i1].x <<" "<<points[i1].y << ", "<< points[i2].x <<" "<<points[i2].y << ", " << points[i3].x <<" "<<points[i3].y << ", " << points[i4].x <<" "<<points[i4].y << ", " << endl;
  155.  
  156. int pointsInRect = 0;
  157.  
  158. for (int j = 0; j < N; ++j)
  159. if (j != i1 && j != i2 && j != i3 && j != i4)
  160. if (IsPointInsideRect(points[j], points[i1], points[i2], points[i3], points[i4]))
  161. ++pointsInRect;
  162.  
  163. if (pointsInRect > maxPointsInRect)
  164. {
  165. maxPointsInRect = pointsInRect;
  166. maxPoint1x = points[i1].x;
  167. maxPoint1y = points[i1].y;
  168. maxPoint2x = points[i2].x;
  169. maxPoint2y = points[i2].y;
  170. maxPoint3x = points[i3].x;
  171. maxPoint3y = points[i3].y;
  172. maxPoint4x = points[i4].x;
  173. maxPoint4y = points[i4].y;
  174. }
  175. }
  176.  
  177. if ((maxPointsInRect == -1) || (maxPointsInRect == 0))
  178. {
  179. cout << "No rectangles are found" << endl;
  180. }
  181. else
  182. {
  183. cout << "Maximus points number inside a rectagle is " << maxPointsInRect << ". Rectange is build from points with coordinates " << maxPoint1x << " " << maxPoint1y << ", " << maxPoint2x << " " << maxPoint2y << ", " << maxPoint3x << " " << maxPoint3y << ", " << maxPoint4x << " "<< maxPoint4y << endl;
  184. }
  185.  
  186. delete[] points;
  187.  
  188. return 0;
  189. }
  190.  
  191.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.cpp:4:20: fatal error: stdafx.h: No such file or directory
 #include "stdafx.h"
                    ^
compilation terminated.
stdout
Standard output is empty