fork(1) download
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7. double x1, y1, x2, y2, x3, y3, x4, y4;
  8. double Ua, Ub, numerator_a, numerator_b, denominator;
  9.  
  10. cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
  11. denominator=(y4-y3)*(x1-x2)-(x4-x3)*(y1-y2);
  12. if (denominator == 0){
  13. if ( (x1*y2-x2*y1)*(x4-x3) - (x3*y4-x4*y3)*(x2-x1) == 0 && (x1*y2-x2*y1)*(y4-y3) - (x3*y4-x4*y3)*(y2-y1) == 0)
  14. cout << "Отрезки пересекаются";
  15. else cout << "Отрезки не пересекаются";
  16. }
  17. else{
  18. numerator_a=(x4-x2)*(y4-y3)-(x4-x3)*(y4-y2);
  19. numerator_b=(x1-x2)*(y4-y2)-(x4-x2)*(y1-y2);
  20. Ua=numerator_a/denominator;
  21. Ub=numerator_b/denominator;
  22. cout << (Ua >=0 && Ua <=1 && Ub >=0 && Ub <=1 ? "Отрезки пересекаются" : "Отрезки не пересекаются");
  23. }
  24. return 0;
  25. }
Success #stdin #stdout 0s 4412KB
stdin
-1	1	-1	2	1	1	2	2
stdout
Отрезки не пересекаются