#include <iostream>
using namespace std;
double det(double xA, double yA, double xB, double yB, double xP, double yP)
{
return (xB - xA) * (yP - yA) - (yB - yA) * (xP - xA);
}
void czytaj_punkt(double &xP, double &yP)
{
cout << "Podaj wspolrzedne punktu P (x y): ";
cin >> xP >> yP;
}
bool punkt_w_odcinku(double xA, double yA, double xB, double yB, double xP, double yP)
{
if(det(xA,yA,xB,yB,xP,yP) != 0)
return false;
if(xP >= min(xA,xB) && xP <= max(xA,xB) &&
yP >= min(yA,yB) && yP <= max(yA,yB))
return true;
return false;
}
int main()
{
double xA = 0, yA = 0;
double xB = 2, yB = 2;
double xP = 1, yP = 1;
czytaj_punkt(xP, yP);
if(punkt_w_odcinku(xA,yA,xB,yB,xP,yP))
cout << "Punkt P nalezy do odcinka AB." << endl;
else
cout << "Punkt P nie nalezy do odcinka AB." << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIGRldChkb3VibGUgeEEsIGRvdWJsZSB5QSwgZG91YmxlIHhCLCBkb3VibGUgeUIsIGRvdWJsZSB4UCwgZG91YmxlIHlQKQp7CiAgICByZXR1cm4gKHhCIC0geEEpICogKHlQIC0geUEpIC0gKHlCIC0geUEpICogKHhQIC0geEEpOwp9Cgp2b2lkIGN6eXRhal9wdW5rdChkb3VibGUgJnhQLCBkb3VibGUgJnlQKQp7CiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbHJ6ZWRuZSBwdW5rdHUgUCAoeCB5KTogIjsKICAgIGNpbiA+PiB4UCA+PiB5UDsKfQoKYm9vbCBwdW5rdF93X29kY2lua3UoZG91YmxlIHhBLCBkb3VibGUgeUEsIGRvdWJsZSB4QiwgZG91YmxlIHlCLCBkb3VibGUgeFAsIGRvdWJsZSB5UCkKewogICAgaWYoZGV0KHhBLHlBLHhCLHlCLHhQLHlQKSAhPSAwKQogICAgICAgIHJldHVybiBmYWxzZTsKCiAgICBpZih4UCA+PSBtaW4oeEEseEIpICYmIHhQIDw9IG1heCh4QSx4QikgJiYKICAgICAgIHlQID49IG1pbih5QSx5QikgJiYgeVAgPD0gbWF4KHlBLHlCKSkKICAgICAgICByZXR1cm4gdHJ1ZTsKCiAgICByZXR1cm4gZmFsc2U7Cn0KCmludCBtYWluKCkKewogICAgZG91YmxlIHhBID0gMCwgeUEgPSAwOwogICAgZG91YmxlIHhCID0gMiwgeUIgPSAyOwogICAgZG91YmxlIHhQID0gMSwgeVAgPSAxOwoKICAgIGN6eXRhal9wdW5rdCh4UCwgeVApOwoKICAgIGlmKHB1bmt0X3dfb2RjaW5rdSh4QSx5QSx4Qix5Qix4UCx5UCkpCiAgICAgICAgY291dCA8PCAiUHVua3QgUCBuYWxlenkgZG8gb2RjaW5rYSBBQi4iIDw8IGVuZGw7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiUHVua3QgUCBuaWUgbmFsZXp5IGRvIG9kY2lua2EgQUIuIiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9