#include <iostream>
using namespace std;
double det(double x1, double y1, double x2, double y2, double x3, double y3)
{
return x1*(y2-y3) + x2*(y3-y1) + x3*(y1-y2);
}
void czytaj_punkt(double &x, double &y)
{
cout << "Podaj x: ";
cin >> x;
cout << "Podaj y: ";
cin >> y;
}
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 xP,yP;
double xA = 0, yA = 0;
double xB = 2, yB = 2;
cout << "Podaj wspolrzedne punktu P:\n";
czytaj_punkt(xP,yP);
if(punkt_w_odcinku(xA,yA,xB,yB,xP,yP))
cout << "Punkt P nalezy do odcinka AB";
else
cout << "Punkt P nie nalezy do odcinka AB";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIGRldChkb3VibGUgeDEsIGRvdWJsZSB5MSwgZG91YmxlIHgyLCBkb3VibGUgeTIsIGRvdWJsZSB4MywgZG91YmxlIHkzKQp7CiAgICByZXR1cm4geDEqKHkyLXkzKSArIHgyKih5My15MSkgKyB4MyooeTEteTIpOwp9Cgp2b2lkIGN6eXRhal9wdW5rdChkb3VibGUgJngsIGRvdWJsZSAmeSkKewogICAgY291dCA8PCAiUG9kYWogeDogIjsKICAgIGNpbiA+PiB4OwogICAgY291dCA8PCAiUG9kYWogeTogIjsKICAgIGNpbiA+PiB5Owp9Cgpib29sIHB1bmt0X3dfb2RjaW5rdShkb3VibGUgeEEsIGRvdWJsZSB5QSwgZG91YmxlIHhCLCBkb3VibGUgeUIsIGRvdWJsZSB4UCwgZG91YmxlIHlQKQp7CiAgICBpZihkZXQoeEEseUEseEIseUIseFAseVApICE9IDApCiAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgIGlmKHhQID49IG1pbih4QSx4QikgJiYgeFAgPD0gbWF4KHhBLHhCKSAmJgogICAgICAgeVAgPj0gbWluKHlBLHlCKSAmJiB5UCA8PSBtYXgoeUEseUIpKQogICAgICAgIHJldHVybiB0cnVlOwoKICAgIHJldHVybiBmYWxzZTsKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgeFAseVA7CiAgICBkb3VibGUgeEEgPSAwLCB5QSA9IDA7CiAgICBkb3VibGUgeEIgPSAyLCB5QiA9IDI7CgogICAgY291dCA8PCAiUG9kYWogd3Nwb2xyemVkbmUgcHVua3R1IFA6XG4iOwogICAgY3p5dGFqX3B1bmt0KHhQLHlQKTsKCiAgICBpZihwdW5rdF93X29kY2lua3UoeEEseUEseEIseUIseFAseVApKQogICAgICAgIGNvdXQgPDwgIlB1bmt0IFAgbmFsZXp5IGRvIG9kY2lua2EgQUIiOwogICAgZWxzZQogICAgICAgIGNvdXQgPDwgIlB1bmt0IFAgbmllIG5hbGV6eSBkbyBvZGNpbmthIEFCIjsKCiAgICByZXR1cm4gMDsKfQ==