#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);
}
Punkt czytaj_punkt() {
Punkt p;
cout << "Podaj wspolrzedna x punktu P: ";
cin >> p.x;
cout << "Podaj wspolrzedna y punktu P: ";
cin >> p.y;
return p;
}
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 = {0, 0};
Punkt B = {2, 2};
Punkt P;
P = czytaj_punkt();
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFB1bmt0IHsKICAgIGRvdWJsZSB4LCB5Owp9OwoKZG91YmxlIGRldChQdW5rdCBBLCBQdW5rdCBCLCBQdW5rdCBQKSB7CiAgICByZXR1cm4gKEIueCAtIEEueCkgKiAoUC55IC0gQS55KSAtIChCLnkgLSBBLnkpICogKFAueCAtIEEueCk7Cn0KClB1bmt0IGN6eXRhal9wdW5rdCgpIHsKICAgIFB1bmt0IHA7CiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbHJ6ZWRuYSB4IHB1bmt0dSBQOiAiOwogICAgY2luID4+IHAueDsKICAgIGNvdXQgPDwgIlBvZGFqIHdzcG9scnplZG5hIHkgcHVua3R1IFA6ICI7CiAgICBjaW4gPj4gcC55OwogICAgcmV0dXJuIHA7Cn0KCmJvb2wgcHVua3Rfd19vZGNpbmt1KFB1bmt0IEEsIFB1bmt0IEIsIFB1bmt0IFApIHsKICAgIGlmIChkZXQoQSwgQiwgUCkgIT0gMCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKFAueCA+PSBtaW4oQS54LCBCLngpICYmIFAueCA8PSBtYXgoQS54LCBCLngpICYmCiAgICAgICAgUC55ID49IG1pbihBLnksIEIueSkgJiYgUC55IDw9IG1heChBLnksIEIueSkpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKICAgIFB1bmt0IEEgPSB7MCwgMH07CiAgICBQdW5rdCBCID0gezIsIDJ9OwogICAgUHVua3QgUDsKCiAgICBQID0gY3p5dGFqX3B1bmt0KCk7CgogICAgaWYgKHB1bmt0X3dfb2RjaW5rdShBLCBCLCBQKSkKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5hbGV6eSBkbyBvZGNpbmthIEFCLiIgPDwgZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5pZSBuYWxlenkgZG8gb2RjaW5rYSBBQi4iIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=