На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек - PascalABC.NET
Формулировка задачи:
Даны действительные числа х1,у1,х2,у2(х1 не равен х2),которые определяют 2 точки А(х1,у1) и В(х2,у2).На оси абцисс найти такую точку,сумма расстояний,которой до точек А и В-наименьшая для всех точек этой оси.
Аналитическая геометрия 9-10 класс,нашёл формулу по нахождению расстояния и получению сумму но результаты совсем не те.
Сначала решил решить при помощи уравнения прямой через 2 точки с нахождением коэффициента и приравниваю к нулю,и последующего нахождения х.
Но выяснилось что такой код неверен и неверно считает коэффициенты.
Немного подправил и в просторах интернета нашёл другую формулу для нахождения точки с суммой расстояний.
И вот здесь интересно ваше мнение,правильно ли я двигаюсь.
или же в 1-ом варианте нужна доработка.
Решение задачи: «На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек»
textual
Листинг программы
program labwork1;
var
x, x1, y1, x2, y2: real;
k, b: real;
begin
writeln('Введите координаты точки А');
readln(x1, y1);
writeln('Введите координаты точки В');
readln(x2, y2);
if (y1 = 0) and (y2 = 0) then
begin
if x1<x2 then writeln('x любое значение от ',x1:0:1,' до ',x2:0:1)
else writeln('x любое значение от ',x2:0:1,' до ',x1:0:1);
end
else if y1=0 then x:=x1
else if y2=0 then x:=x2
else
begin
if (y1 * y2 > 0) then y1 := -y1;
k := (y2 - y1) / (x2 - x1);
b := (x2 * y1 - y2 * x1) / (x2 - x1);
x := -b / k;
end ;
writeln('Точка, удовлетворяющая условию, на оси x = ', x:0:1)
end.
Объяснение кода листинга программы
- Задаются координаты точек А и В
- Проверяется условие задачи: если координаты точек А и В на одной прямой, проходящей через начало координат, то находится точка, удовлетворяющая условию, и выводится её координата x
- Если условие не выполняется, то программа выводит сообщение о том, что прямая, проходящая через точки А и В, пересекает ось x в произвольном месте