fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. // Funkcja wczytująca współrzędne punktu
  5. void punkt(double &x, double &y) {
  6. cin >> x >> y;
  7. }
  8.  
  9. // Funkcja sprawdzająca czy dwa punkty leżą po tej samej stronie prostej
  10. bool po_stronie(double x1, double y1, double x2, double y2) {
  11. const double A = 1;
  12. const double B = -1;
  13. const double C = 0;
  14.  
  15. double wart1 = A * x1 + B * y1 + C;
  16. double wart2 = A * x2 + B * y2 + C;
  17.  
  18. // Punkty są po tej samej stronie, jeśli iloczyn jest dodatni
  19. return (wart1 * wart2 > 0);
  20. }
  21.  
  22. int main() {
  23. double xP1, yP1, xP2, yP2, xP3, yP3, xP4, yP4;
  24.  
  25. // Wczytanie punktów
  26. punkt(xP1, yP1);
  27. punkt(xP2, yP2);
  28. punkt(xP3, yP3);
  29. punkt(xP4, yP4);
  30.  
  31. bool wynik = true;
  32.  
  33. // Sprawdzamy wszystkie pary względem pierwszego punktu
  34. if (!po_stronie(xP1, yP1, xP2, yP2)) wynik = false;
  35. if (!po_stronie(xP1, yP1, xP3, yP3)) wynik = false;
  36. if (!po_stronie(xP1, yP1, xP4, yP4)) wynik = false;
  37.  
  38. if (wynik)
  39. cout << "Punkty leza po tej samej stronie prostej" << endl;
  40. else
  41. cout << "Punkty nie leza po tej samej stronie prostej" << endl;
  42.  
  43. return 0;
  44. }
Success #stdin #stdout 0s 5320KB
stdin
1 0
1 2
-1 0
2 2.2
stdout
Punkty nie leza po tej samej stronie prostej