#include <iostream>
using namespace std;
// Definicja struktury punkt
struct punkt
{
float x;
float y;
};
// Funkcja wczytująca współrzędne punktu
punkt wczytaj_punkt(float px, float py)
{
punkt p;
p.x = px;
p.y = py;
return p;
}
// Funkcja sprawdzająca, czy dwa punkty leżą po tej samej stronie prostej A*x + B*y + C = 0
bool po_stronie(punkt p1, punkt p2, float A, float B, float C)
{
// Obliczamy wartości funkcji prostej dla obu punktów
float f1 = A * p1.x + B * p1.y + C;
float f2 = A * p2.x + B * p2.y + C;
// Jeśli iloczyn f1*f2 > 0, punkty leżą po tej samej stronie
return (f1 * f2 > 0);
}
int main()
{
// Dane punktów
punkt P1 = wczytaj_punkt(1, 0);
punkt P2 = wczytaj_punkt(1, 2);
punkt P3 = wczytaj_punkt(-1, 0);
punkt P4 = wczytaj_punkt(2, 2.2);
// Współczynniki prostej: A*x + B*y + C = 0
float A = 1.0, B = -1.0, C = 0.0;
// Sprawdzamy pary punktów
bool para1 = po_stronie(P1, P2, A, B, C);
bool para2 = po_stronie(P3, P4, A, B, C);
if (para1 && para2)
cout << "Punkty leżą po tej samej stronie prostej" << endl;
else
cout << "Punkty nie leza po tej samej stronie prostej" << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIERlZmluaWNqYSBzdHJ1a3R1cnkgcHVua3QKc3RydWN0IHB1bmt0CnsKICAgIGZsb2F0IHg7CiAgICBmbG9hdCB5Owp9OwoKLy8gRnVua2NqYSB3Y3p5dHVqxIVjYSB3c3DDs8WCcnrEmWRuZSBwdW5rdHUKcHVua3Qgd2N6eXRhal9wdW5rdChmbG9hdCBweCwgZmxvYXQgcHkpCnsKICAgIHB1bmt0IHA7CiAgICBwLnggPSBweDsKICAgIHAueSA9IHB5OwogICAgcmV0dXJuIHA7Cn0KCi8vIEZ1bmtjamEgc3ByYXdkemFqxIVjYSwgY3p5IGR3YSBwdW5rdHkgbGXFvMSFIHBvIHRlaiBzYW1laiBzdHJvbmllIHByb3N0ZWogQSp4ICsgQip5ICsgQyA9IDAKYm9vbCBwb19zdHJvbmllKHB1bmt0IHAxLCBwdW5rdCBwMiwgZmxvYXQgQSwgZmxvYXQgQiwgZmxvYXQgQykKewogICAgLy8gT2JsaWN6YW15IHdhcnRvxZtjaSBmdW5rY2ppIHByb3N0ZWogZGxhIG9idSBwdW5rdMOzdwogICAgZmxvYXQgZjEgPSBBICogcDEueCArIEIgKiBwMS55ICsgQzsKICAgIGZsb2F0IGYyID0gQSAqIHAyLnggKyBCICogcDIueSArIEM7CgogICAgLy8gSmXFm2xpIGlsb2N6eW4gZjEqZjIgPiAwLCBwdW5rdHkgbGXFvMSFIHBvIHRlaiBzYW1laiBzdHJvbmllCiAgICByZXR1cm4gKGYxICogZjIgPiAwKTsKfQoKaW50IG1haW4oKQp7CiAgICAvLyBEYW5lIHB1bmt0w7N3CiAgICBwdW5rdCBQMSA9IHdjenl0YWpfcHVua3QoMSwgMCk7CiAgICBwdW5rdCBQMiA9IHdjenl0YWpfcHVua3QoMSwgMik7CiAgICBwdW5rdCBQMyA9IHdjenl0YWpfcHVua3QoLTEsIDApOwogICAgcHVua3QgUDQgPSB3Y3p5dGFqX3B1bmt0KDIsIDIuMik7CgogICAgLy8gV3Nww7PFgmN6eW5uaWtpIHByb3N0ZWo6IEEqeCArIEIqeSArIEMgPSAwCiAgICBmbG9hdCBBID0gMS4wLCBCID0gLTEuMCwgQyA9IDAuMDsKCiAgICAvLyBTcHJhd2R6YW15IHBhcnkgcHVua3TDs3cKICAgIGJvb2wgcGFyYTEgPSBwb19zdHJvbmllKFAxLCBQMiwgQSwgQiwgQyk7CiAgICBib29sIHBhcmEyID0gcG9fc3Ryb25pZShQMywgUDQsIEEsIEIsIEMpOwoKICAgIGlmIChwYXJhMSAmJiBwYXJhMikKICAgICAgICBjb3V0IDw8ICJQdW5rdHkgbGXFvMSFIHBvIHRlaiBzYW1laiBzdHJvbmllIHByb3N0ZWoiIDw8IGVuZGw7CiAgICBlbHNlCiAgICAgICAgY291dCA8PCAiUHVua3R5IG5pZSBsZXphIHBvIHRlaiBzYW1laiBzdHJvbmllIHByb3N0ZWoiIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0=