Добрый день! Помогите, пожалуйста.
Даны координаты трёх точек плоскости. Проверить, образуют ли они прямоугольный треугольник.
Язык: С++
Заранее спасибо.
Ответы на вопрос
Нужно проверить теорему Пифагора по квадратам длин сторон. Сами длины находить через корень не обязательно.
Если точки \( A(x_1, y_1) \), \( B(x_2, y_2) \), \( C(x_3, y_3) \), то считаем:
\[ AB^2 = (x_2 - x_1)^2 + (y_2 - y_1)^2 \]
\[ BC^2 = (x_3 - x_2)^2 + (y_3 - y_2)^2 \]
\[ AC^2 = (x_3 - x_1)^2 + (y_3 - y_1)^2 \]
Треугольник прямоугольный, если сумма двух меньших квадратов равна наибольшему. Ещё нужно проверить, что точки не совпадают и не лежат на одной прямой.
Пример на C++:
long long dist2(long long x1, long long y1, long long x2, long long y2) {
long long dx = x2 - x1;
long long dy = y2 - y1;
return dx * dx + dy * dy;
}
int main() {
long long x1, y1, x2, y2, x3, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
long long a = dist2(x1, y1, x2, y2);
long long b = dist2(x2, y2, x3, y3);
long long c = dist2(x1, y1, x3, y3);
if (a == 0 || b == 0 || c == 0) {
cout << "NO";
} else if (a + b == c || a + c == b || b + c == a) {
cout << "YES";
} else {
cout << "NO";
}
}
Здесь \( a \), \( b \), \( c \) — это не стороны, а квадраты сторон. Поэтому условие Пифагора записано без корней.
Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili

