#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: " ;
cin >> p.x ;
cout << "Podaj wspolrzedna y: " ;
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, B, P;
cout << "Podaj punkt A:" << endl;
A = czytaj_punkt( ) ;
cout << "Podaj punkt B:" << endl;
B = czytaj_punkt( ) ;
cout << "Podaj punkt P:" << endl;
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 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFB1bmt0IHsKICAgIGRvdWJsZSB4LCB5Owp9OwoKZG91YmxlIGRldChQdW5rdCBBLCBQdW5rdCBCLCBQdW5rdCBQKSB7CiAgICByZXR1cm4gKEIueCAtIEEueCkgKiAoUC55IC0gQS55KSAtIChCLnkgLSBBLnkpICogKFAueCAtIEEueCk7Cn0KClB1bmt0IGN6eXRhal9wdW5rdCgpIHsKICAgIFB1bmt0IHA7CiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbHJ6ZWRuYSB4OiAiOwogICAgY2luID4+IHAueDsKICAgIGNvdXQgPDwgIlBvZGFqIHdzcG9scnplZG5hIHk6ICI7CiAgICBjaW4gPj4gcC55OwogICAgcmV0dXJuIHA7Cn0KCmJvb2wgcHVua3Rfd19vZGNpbmt1KFB1bmt0IEEsIFB1bmt0IEIsIFB1bmt0IFApIHsKICAgIGlmIChkZXQoQSwgQiwgUCkgIT0gMCkKICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgaWYgKFAueCA+PSBtaW4oQS54LCBCLngpICYmIFAueCA8PSBtYXgoQS54LCBCLngpICYmCiAgICAgICAgUC55ID49IG1pbihBLnksIEIueSkgJiYgUC55IDw9IG1heChBLnksIEIueSkpCiAgICAgICAgcmV0dXJuIHRydWU7CgogICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpIHsKICAgIFB1bmt0IEEsIEIsIFA7CgogICAgY291dCA8PCAiUG9kYWogcHVua3QgQToiIDw8IGVuZGw7CiAgICBBID0gY3p5dGFqX3B1bmt0KCk7CgogICAgY291dCA8PCAiUG9kYWogcHVua3QgQjoiIDw8IGVuZGw7CiAgICBCID0gY3p5dGFqX3B1bmt0KCk7CgogICAgY291dCA8PCAiUG9kYWogcHVua3QgUDoiIDw8IGVuZGw7CiAgICBQID0gY3p5dGFqX3B1bmt0KCk7CgogICAgaWYgKHB1bmt0X3dfb2RjaW5rdShBLCBCLCBQKSkKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5hbGV6eSBkbyBvZGNpbmthIEFCLiIgPDwgZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIG5pZSBuYWxlenkgZG8gb2RjaW5rYSBBQi4iIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=