#include <iostream>
using namespace std;
struct punkt
{
float x, y;
} ;
// Funkcja wczytująca współrzędne punktu
punkt wczytaj_punkt( )
{
punkt p;
cout << "Podaj wspolrzedna x: " ;
cin >> p.x ;
cout << "Podaj wspolrzedna y: " ;
cin >> p.y ;
return p;
}
// Funkcja sprawdzająca czy punkty leżą po tej samej stronie prostej
bool po_tej_samej_stronie( float A, float B, float C, punkt P1, punkt P2)
{
float wart1 = A * P1.x + B * P1.y + C;
float wart2 = A * P2.x + B * P2.y + C;
// Jeżeli iloczyn ma znak dodatni lub 0 – punkty są po tej samej stronie lub na prostej
if ( wart1 * wart2 >= 0 )
return true ;
else
return false ;
}
int main( )
{
float A, B, C;
cout << "Podaj wspolczynniki prostej (A B C): " ;
cin >> A >> B >> C;
if ( A == 0 && B == 0 )
{
cout << "To nie jest poprawne rownanie prostej." << endl;
return 0 ;
}
cout << "Wczytaj punkt P1:" << endl;
punkt P1 = wczytaj_punkt( ) ;
cout << "Wczytaj punkt P2:" << endl;
punkt P2 = wczytaj_punkt( ) ;
if ( po_tej_samej_stronie( A, B, C, P1, P2) )
cout << "Punkty leza po tej samej stronie lub na prostej." << endl;
else
cout << "Punkty nie leza po tej samej stronie." << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IHB1bmt0CnsKICAgIGZsb2F0IHgsIHk7Cn07CgovLyBGdW5rY2phIHdjenl0dWrEhWNhIHdzcMOzxYJyesSZZG5lIHB1bmt0dQpwdW5rdCB3Y3p5dGFqX3B1bmt0KCkKewogICAgcHVua3QgcDsKICAgIGNvdXQgPDwgIlBvZGFqIHdzcG9scnplZG5hIHg6ICI7CiAgICBjaW4gPj4gcC54OwogICAgY291dCA8PCAiUG9kYWogd3Nwb2xyemVkbmEgeTogIjsKICAgIGNpbiA+PiBwLnk7CiAgICByZXR1cm4gcDsKfQoKLy8gRnVua2NqYSBzcHJhd2R6YWrEhWNhIGN6eSBwdW5rdHkgbGXFvMSFIHBvIHRlaiBzYW1laiBzdHJvbmllIHByb3N0ZWoKYm9vbCBwb190ZWpfc2FtZWpfc3Ryb25pZShmbG9hdCBBLCBmbG9hdCBCLCBmbG9hdCBDLCBwdW5rdCBQMSwgcHVua3QgUDIpCnsKICAgIGZsb2F0IHdhcnQxID0gQSAqIFAxLnggKyBCICogUDEueSArIEM7CiAgICBmbG9hdCB3YXJ0MiA9IEEgKiBQMi54ICsgQiAqIFAyLnkgKyBDOwoKICAgIC8vIEplxbxlbGkgaWxvY3p5biBtYSB6bmFrIGRvZGF0bmkgbHViIDAg4oCTIHB1bmt0eSBzxIUgcG8gdGVqIHNhbWVqIHN0cm9uaWUgbHViIG5hIHByb3N0ZWoKICAgIGlmICh3YXJ0MSAqIHdhcnQyID49IDApCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpCnsKICAgIGZsb2F0IEEsIEIsIEM7CgogICAgY291dCA8PCAiUG9kYWogd3Nwb2xjenlubmlraSBwcm9zdGVqIChBIEIgQyk6ICI7CiAgICBjaW4gPj4gQSA+PiBCID4+IEM7CgogICAgaWYgKEEgPT0gMCAmJiBCID09IDApCiAgICB7CiAgICAgICAgY291dCA8PCAiVG8gbmllIGplc3QgcG9wcmF3bmUgcm93bmFuaWUgcHJvc3Rlai4iIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgY291dCA8PCAiV2N6eXRhaiBwdW5rdCBQMToiIDw8IGVuZGw7CiAgICBwdW5rdCBQMSA9IHdjenl0YWpfcHVua3QoKTsKCiAgICBjb3V0IDw8ICJXY3p5dGFqIHB1bmt0IFAyOiIgPDwgZW5kbDsKICAgIHB1bmt0IFAyID0gd2N6eXRhal9wdW5rdCgpOwoKICAgIGlmIChwb190ZWpfc2FtZWpfc3Ryb25pZShBLCBCLCBDLCBQMSwgUDIpKQogICAgICAgIGNvdXQgPDwgIlB1bmt0eSBsZXphIHBvIHRlaiBzYW1laiBzdHJvbmllIGx1YiBuYSBwcm9zdGVqLiIgPDwgZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8ICJQdW5rdHkgbmllIGxlemEgcG8gdGVqIHNhbWVqIHN0cm9uaWUuIiA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9