Регистрация
15 Июн 2013
Сообщения
86
Репутация
0
Спасибо
0
Монет
0
Ввести с клавиатуры координаты точек A1(x1, y1), A2(x2, y2), A3(x3, y3). Определить, можно ли через точку А3 провести прямую, перпендикулярную прямой, проходящую через точки А1 и А2. Ответ вывести в виде сообщения.
 
Через одну точку можно провести бесконечное количество прямых, в том числе и такую, которая будет перпендикулярна любой другой. Непонятно, в чем тут задача.
Если бы речь шла об отрезках, тогда бы был другой разговор, но с прямыми все слишком тривиально.
 
#include
#include
using namespace std;
struct Dot {
double x;
double y;
double distance(const Dot& d)const {
return sqrt(pow(d.x - x, 2) + pow(d.y - y, 2));
}
bool isline(const Dot& da, const Dot& db)const {
const auto a = da.distance(db);
const auto b = distance(da);
const auto c = distance(db);
const auto sm = a + b + c;
const auto mx = max(a, max(a, b));
const auto mn = min(a, min(a, b));
const auto md = sm - mx - mn;
return fabs(mx - mn - md) < 1e-14;
}
private:
friend istream& operator>>(istream& inp, Dot& d) {
return inp >> d.x >> d.y;
}
};
int main() {
Dot a1{}, a2{}, a3{};
cout > a1;
cout > a2;
cout > a3;
puts(a3.isline(a1, a2) ? "NO" : "YES");
}
 
Назад
Сверху