#include <iostream>
using namespace std;
struct punkt
{
float x, y;
} ;
// Funkcja wczytująca współrzędne punktu
void wczytaj_punkt( punkt & p)
{
cout << "Podaj wspolrzedna x: " ;
cin >> p.x ;
cout << "Podaj wspolrzedna y: " ;
cin >> p.y ;
}
// 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)
{
// Obliczamy wartości równania ogólnego Ax + By + C
float wartosc1 = A * P1.x + B * P1.y + C;
float wartosc2 = A * P2.x + B * P2.y + C;
// Jeżeli iloczyn ma znak dodatni lub któryś punkt leży na prostej (==0),
// uznajemy że leżą po tej samej stronie lub na prostej
if ( wartosc1 * wartosc2 >= 0 )
return true ;
else
return false ;
}
int main( )
{
float A, B, C;
cout << "Podaj wspolczynniki A, B, C prostej (Ax + By + C = 0): " ;
cin >> A >> B >> C;
punkt P1, P2;
cout << "Wprowadz wspolrzedne punktu P1:" << endl;
wczytaj_punkt( P1) ;
cout << "Wprowadz wspolrzedne punktu P2:" << endl;
wczytaj_punkt( P2) ;
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 ani na prostej." << endl;
return 0 ;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBwdW5rdAp7CiAgICBmbG9hdCB4LCB5Owp9OwoKLy8gRnVua2NqYSB3Y3p5dHVqxIVjYSB3c3DDs8WCcnrEmWRuZSBwdW5rdHUKdm9pZCB3Y3p5dGFqX3B1bmt0KHB1bmt0ICZwKQp7CiAgICBjb3V0IDw8ICJQb2RhaiB3c3BvbHJ6ZWRuYSB4OiAiOwogICAgY2luID4+IHAueDsKICAgIGNvdXQgPDwgIlBvZGFqIHdzcG9scnplZG5hIHk6ICI7CiAgICBjaW4gPj4gcC55Owp9CgovLyBGdW5rY2phIHNwcmF3ZHphasSFY2EsIGN6eSBwdW5rdHkgbGXFvMSFIHBvIHRlaiBzYW1laiBzdHJvbmllIHByb3N0ZWoKYm9vbCBwb190ZWpfc2FtZWpfc3Ryb25pZShmbG9hdCBBLCBmbG9hdCBCLCBmbG9hdCBDLCBwdW5rdCBQMSwgcHVua3QgUDIpCnsKICAgIC8vIE9ibGljemFteSB3YXJ0b8WbY2kgcsOzd25hbmlhIG9nw7NsbmVnbyBBeCArIEJ5ICsgQwogICAgZmxvYXQgd2FydG9zYzEgPSBBICogUDEueCArIEIgKiBQMS55ICsgQzsKICAgIGZsb2F0IHdhcnRvc2MyID0gQSAqIFAyLnggKyBCICogUDIueSArIEM7CgogICAgLy8gSmXFvGVsaSBpbG9jenluIG1hIHpuYWsgZG9kYXRuaSBsdWIga3TDs3J5xZsgcHVua3QgbGXFvHkgbmEgcHJvc3RlaiAoPT0wKSwKICAgIC8vIHV6bmFqZW15IMW8ZSBsZcW8xIUgcG8gdGVqIHNhbWVqIHN0cm9uaWUgbHViIG5hIHByb3N0ZWoKICAgIGlmICh3YXJ0b3NjMSAqIHdhcnRvc2MyID49IDApCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICBlbHNlCiAgICAgICAgcmV0dXJuIGZhbHNlOwp9CgppbnQgbWFpbigpCnsKICAgIGZsb2F0IEEsIEIsIEM7CgogICAgY291dCA8PCAiUG9kYWogd3Nwb2xjenlubmlraSBBLCBCLCBDIHByb3N0ZWogKEF4ICsgQnkgKyBDID0gMCk6ICI7CiAgICBjaW4gPj4gQSA+PiBCID4+IEM7CgogICAgcHVua3QgUDEsIFAyOwoKICAgIGNvdXQgPDwgIldwcm93YWR6IHdzcG9scnplZG5lIHB1bmt0dSBQMToiIDw8IGVuZGw7CiAgICB3Y3p5dGFqX3B1bmt0KFAxKTsKCiAgICBjb3V0IDw8ICJXcHJvd2FkeiB3c3BvbHJ6ZWRuZSBwdW5rdHUgUDI6IiA8PCBlbmRsOwogICAgd2N6eXRhal9wdW5rdChQMik7CgogICAgaWYgKHBvX3Rlal9zYW1lal9zdHJvbmllKEEsIEIsIEMsIFAxLCBQMikpCiAgICAgICAgY291dCA8PCAiUHVua3R5IGxlemEgcG8gdGVqIHNhbWVqIHN0cm9uaWUgbHViIG5hIHByb3N0ZWouIiA8PCBlbmRsOwogICAgZWxzZQogICAgICAgIGNvdXQgPDwgIlB1bmt0eSBuaWUgbGV6YSBwbyB0ZWogc2FtZWogc3Ryb25pZSBhbmkgbmEgcHJvc3Rlai4iIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=