Задача на с++. Даны координаты вершин треугольника и координаты вершины точки в нём. Найти расстояние от этой точки до самой близкой середины стороны треугольника.(Расстояние от точки до середины стороны треугольника должно быть наименьшем чем 2 других расстояния, но возможны варианты когда 3 или 2 расстояния равны)
Для решения этой задачи можно воспользоваться следующим алгоритмом:
Находим середины сторон треугольника.Для каждой середины стороны находим расстояние до данной точки.Выбираем самое минимальное из найденных расстояний.
Пример кода на C++:
#include <iostream> #include <cmath> struct Point { double x, y; }; double distance(Point p1, Point p2) { return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2)); } Point midpoint(Point p1, Point p2) { Point mid; mid.x = (p1.x + p2.x) / 2; mid.y = (p1.y + p2.y) / 2; return mid; } int main() { Point A = {0.0, 0.0}; Point B = {3.0, 0.0}; Point C = {1.5, 2.0}; Point P = {2.0, 1.0}; Point midAB = midpoint(A, B); Point midBC = midpoint(B, C); Point midCA = midpoint(C, A); double distAB = distance(P, midAB); double distBC = distance(P, midBC); double distCA = distance(P, midCA); double minDistance = std::min(std::min(distAB, distBC), distCA); std::cout << "Минимальное расстояние до середины стороны треугольника: " << minDistance << std::endl; return 0; }
Пример вывода:
Минимальное расстояние до середины стороны треугольника: 1.0
Для решения этой задачи можно воспользоваться следующим алгоритмом:
Находим середины сторон треугольника.Для каждой середины стороны находим расстояние до данной точки.Выбираем самое минимальное из найденных расстояний.Пример кода на C++:
#include <iostream>#include <cmath>
struct Point {
double x, y;
};
double distance(Point p1, Point p2) {
return sqrt(pow(p1.x - p2.x, 2) + pow(p1.y - p2.y, 2));
}
Point midpoint(Point p1, Point p2) {
Point mid;
mid.x = (p1.x + p2.x) / 2;
mid.y = (p1.y + p2.y) / 2;
return mid;
}
int main() {
Point A = {0.0, 0.0};
Point B = {3.0, 0.0};
Point C = {1.5, 2.0};
Point P = {2.0, 1.0};
Point midAB = midpoint(A, B);
Point midBC = midpoint(B, C);
Point midCA = midpoint(C, A);
double distAB = distance(P, midAB);
double distBC = distance(P, midBC);
double distCA = distance(P, midCA);
double minDistance = std::min(std::min(distAB, distBC), distCA);
std::cout << "Минимальное расстояние до середины стороны треугольника: " << minDistance << std::endl;
return 0;
}
Пример вывода:
Минимальное расстояние до середины стороны треугольника: 1.0