#include <iostream>
using namespace std;
struct Punkt {
double x, y;
};
// funkcja obliczająca wyznacznik
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);
}
// funkcja wczytująca punkt
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;
}
// funkcja sprawdzająca czy punkt P należy do odcinka AB
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 = 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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFB1bmt0IHsKICAgIGRvdWJsZSB4LCB5Owp9OwoKLy8gZnVua2NqYSBvYmxpY3phasSFY2Egd3l6bmFjem5pawpkb3VibGUgZGV0KFB1bmt0IEEsIFB1bmt0IEIsIFB1bmt0IFApIHsKICAgIHJldHVybiAoQi54IC0gQS54KSAqIChQLnkgLSBBLnkpIC0gKEIueSAtIEEueSkgKiAoUC54IC0gQS54KTsKfQoKLy8gZnVua2NqYSB3Y3p5dHVqxIVjYSBwdW5rdApQdW5rdCBjenl0YWpfcHVua3QoKSB7CiAgICBQdW5rdCBQOwogICAgY291dCA8PCAiUG9kYWogd3Nwb2xyemVkbmEgeCBwdW5rdHUgUDogIjsKICAgIGNpbiA+PiBQLng7CiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbHJ6ZWRuYSB5IHB1bmt0dSBQOiAiOwogICAgY2luID4+IFAueTsKICAgIHJldHVybiBQOwp9CgovLyBmdW5rY2phIHNwcmF3ZHphasSFY2EgY3p5IHB1bmt0IFAgbmFsZcW8eSBkbyBvZGNpbmthIEFCCmJvb2wgcHVua3Rfd19vZGNpbmt1KFB1bmt0IEEsIFB1bmt0IEIsIFB1bmt0IFApIHsKCiAgICBpZiAoZGV0KEEsIEIsIFApICE9IDApCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlmIChQLnggPj0gbWluKEEueCwgQi54KSAmJiBQLnggPD0gbWF4KEEueCwgQi54KSAmJgogICAgICAgIFAueSA+PSBtaW4oQS55LCBCLnkpICYmIFAueSA8PSBtYXgoQS55LCBCLnkpKQogICAgICAgIHJldHVybiB0cnVlOwoKICAgIHJldHVybiBmYWxzZTsKfQoKaW50IG1haW4oKSB7CiAgICBQdW5rdCBBID0gezAsIDB9OwogICAgUHVua3QgQiA9IHsyLCAyfTsKCiAgICBQdW5rdCBQID0gY3p5dGFqX3B1bmt0KCk7CgogICAgaWYgKHB1bmt0X3dfb2RjaW5rdShBLCBCLCBQKSkKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5hbGV6eSBkbyBvZGNpbmthIEFCLiIgPDwgZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5pZSBuYWxlenkgZG8gb2RjaW5rYSBBQi4iIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=