C/C++

Программирование С++. Помогите)

Дана точка A(x, y). Определить принадлежит ли она прямой, проходящей через
точки с координатами (x1, y1), (x2, y2).
#include <iostream>
using namespace std;
struct Point {
double x;
double y;
Point() : x(0), y(0) {}
Point(double x, double y) : x(x), y(y) {}
double length(const Point& p)const {
return sqrt(pow(p.x - x, 2) + pow(p.y - y, 2));
}
};
struct Line {
Point a;
Point b;
Line() = default;
Line(Point a, Point b) : a(a), b(b) {}
double length()const {
return a.length(b);
}
bool belongs(const Point& c)const {
auto ab = length();
auto ac = a.length(c);
auto bc = b.length(c);
auto p = (ab + ac + bc) / 2;
auto arg = fabs(p * (p - ab) * (p - ac) * (p - bc));
return arg < 1e-12;
}
};
double coord(const char* msg) {
cout << msg;
double value;
cin >> value;
return value;
}
int main() {
auto x = coord("x: ");
auto y = coord("y: ");
Point a(x, y);
auto x1 = coord("x1: ");
auto y1 = coord("y1: ");
Point b(x1, y1);
auto x2 = coord("x2: ");
auto y2 = coord("y2: ");
Point c(x2, y2);
Line line(b, c);
system("chcp 1251 > nul");
if (line.belongs(a)) puts("Принадлежит!");
else puts("Не принадлежит!");
system("pause > nul");
}
Alexyi Golovin
Alexyi Golovin
70 490
Лучший ответ
Есть две точки (xa,ya) (xb,yb). Уравнение прямой, проходящей через них y=kx+b, где
k = (ya - yb) / (xa - xb)
b = yb - k * xb
if (y==kx+b) cout<<true;
Федор Савичев
Федор Савичев
86 099