#include <iostream>
using namespace std;
struct Punkt {
double x;
double 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);
}
void czytaj_punkt(Punkt &p, char nazwa) {
cout << "Podaj wspolrzedne punktu " << nazwa << " (x y): ";
cin >> p.x >> p.y;
}
void punkt_po_stronie(Punkt A, Punkt B, Punkt P) {
double d = det(A, B, P);
if (d > 0)
cout << "Punkt P lezy po lewej stronie" << endl;
else if (d < 0)
cout << "Punkt P lezy po prawej stronie" << endl;
else
cout << "Punkt P lezy na prostej AB" << endl;
}
int main() {
Punkt A, B, P;
czytaj_punkt(A, 'A');
czytaj_punkt(B, 'B');
czytaj_punkt(P, 'P');
punkt_po_stronie(A, B, P);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFB1bmt0IHsKICAgIGRvdWJsZSB4OwogICAgZG91YmxlIHk7Cn07Cgpkb3VibGUgZGV0KFB1bmt0IEEsIFB1bmt0IEIsIFB1bmt0IFApIHsKICAgIHJldHVybiAoQi54IC0gQS54KSAqIChQLnkgLSBBLnkpIC0gKEIueSAtIEEueSkgKiAoUC54IC0gQS54KTsKfQoKdm9pZCBjenl0YWpfcHVua3QoUHVua3QgJnAsIGNoYXIgbmF6d2EpIHsKICAgIGNvdXQgPDwgIlBvZGFqIHdzcG9scnplZG5lIHB1bmt0dSAiIDw8IG5hendhIDw8ICIgKHggeSk6ICI7CiAgICBjaW4gPj4gcC54ID4+IHAueTsKfQoKdm9pZCBwdW5rdF9wb19zdHJvbmllKFB1bmt0IEEsIFB1bmt0IEIsIFB1bmt0IFApIHsKICAgIGRvdWJsZSBkID0gZGV0KEEsIEIsIFApOwoKICAgIGlmIChkID4gMCkKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIGxlenkgcG8gbGV3ZWogc3Ryb25pZSIgPDwgZW5kbDsKICAgIGVsc2UgaWYgKGQgPCAwKQogICAgICAgIGNvdXQgPDwgIlB1bmt0IFAgbGV6eSBwbyBwcmF3ZWogc3Ryb25pZSIgPDwgZW5kbDsKICAgIGVsc2UKICAgICAgICBjb3V0IDw8ICJQdW5rdCBQIGxlenkgbmEgcHJvc3RlaiBBQiIgPDwgZW5kbDsKfQoKaW50IG1haW4oKSB7CiAgICBQdW5rdCBBLCBCLCBQOwoKICAgIGN6eXRhal9wdW5rdChBLCAnQScpOwogICAgY3p5dGFqX3B1bmt0KEIsICdCJyk7CiAgICBjenl0YWpfcHVua3QoUCwgJ1AnKTsKCiAgICBwdW5rdF9wb19zdHJvbmllKEEsIEIsIFApOwoKICAgIHJldHVybiAwOwp9