#include <iostream>
using namespace std;
struct Punkt {
double x, y;
};
double det(Punkt A, Punkt B, Punkt P) {
return (B.x - A.x) * (P.y - A.y) - (B.y - A.y) * (P.x - A.x);
}
void czytaj_punkt(Punkt &P, string nazwa) {
cout << "Podaj wspolrzedne punktu " << nazwa << " (x y): ";
cin >> P.x >> P.y;
}
bool punkt_w_odcinku(Punkt A, Punkt B, Punkt P) {
if (det(A, B, P) != 0)
return false;
if (P.x >= min(A.x, B.x) && P.x <= max(A.x, B.x) &&
P.y >= min(A.y, B.y) && P.y <= max(A.y, B.y))
return true;
return false;
}
int main() {
Punkt A, B, P;
czytaj_punkt(A, "A");
czytaj_punkt(B, "B");
czytaj_punkt(P, "P");
if (punkt_w_odcinku(A, B, P))
cout << "Punkt P nalezy do odcinka AB." << endl;
else
cout << "Punkt P NIE nalezy do odcinka AB." << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFB1bmt0IHsKICAgIGRvdWJsZSB4LCB5Owp9OwoKZG91YmxlIGRldChQdW5rdCBBLCBQdW5rdCBCLCBQdW5rdCBQKSB7CiAgICByZXR1cm4gKEIueCAtIEEueCkgKiAoUC55IC0gQS55KSAtIChCLnkgLSBBLnkpICogKFAueCAtIEEueCk7Cn0KCnZvaWQgY3p5dGFqX3B1bmt0KFB1bmt0ICZQLCBzdHJpbmcgbmF6d2EpIHsKICAgIGNvdXQgPDwgIlBvZGFqIHdzcG9scnplZG5lIHB1bmt0dSAiIDw8IG5hendhIDw8ICIgKHggeSk6ICI7CiAgICBjaW4gPj4gUC54ID4+IFAueTsKfQoKYm9vbCBwdW5rdF93X29kY2lua3UoUHVua3QgQSwgUHVua3QgQiwgUHVua3QgUCkgewogICAgaWYgKGRldChBLCBCLCBQKSAhPSAwKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpZiAoUC54ID49IG1pbihBLngsIEIueCkgJiYgUC54IDw9IG1heChBLngsIEIueCkgJiYKICAgICAgICBQLnkgPj0gbWluKEEueSwgQi55KSAmJiBQLnkgPD0gbWF4KEEueSwgQi55KSkKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkgewogICAgUHVua3QgQSwgQiwgUDsKCiAgICBjenl0YWpfcHVua3QoQSwgIkEiKTsKICAgIGN6eXRhal9wdW5rdChCLCAiQiIpOwogICAgY3p5dGFqX3B1bmt0KFAsICJQIik7CgogICAgaWYgKHB1bmt0X3dfb2RjaW5rdShBLCBCLCBQKSkKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5hbGV6eSBkbyBvZGNpbmthIEFCLiIgPDwgZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIE5JRSBuYWxlenkgZG8gb2RjaW5rYSBBQi4iIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=