На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

Даны действительные числа х1,у1,х2,у2(х1 не равен х2),которые определяют 2 точки А(х1,у1) и В(х2,у2).На оси абцисс найти такую точку,сумма расстояний,которой до точек А и В-наименьшая для всех точек этой оси. Аналитическая геометрия 9-10 класс,нашёл формулу по нахождению расстояния и получению сумму но результаты совсем не те. Сначала решил решить при помощи уравнения прямой через 2 точки с нахождением коэффициента и приравниваю к нулю,и последующего нахождения х. Но выяснилось что такой код неверен и неверно считает коэффициенты.
Листинг программы
  1. program labwork1;
  2. uses crt;
  3. var
  4. x1,y1,x2,y2:real;
  5. a,c,b,kb:real;
  6. procedure one();
  7. begin
  8. writeln('Введите координаты точки А');
  9. readln(x1,y1);
  10. writeln('Введите координаты точки В');
  11. readln(x2,y2);
  12. if x1<>x2 then
  13. begin
  14. a:= y2-y1;
  15. b:= x1-x2;
  16. c:= -x1*(y2-y1)+y1*(x2-x1);
  17. kb:=c/a;
  18. writeln('Уравнение прямой: ',a:5:1,'x + ',b:5:1,'y+',c:5:1,'=0');
  19. writeln('При y = 0 ,находим x= ',kb:0:2,' ','который и является точкой заданной в условии задачи')
  20. end
  21. else
  22. writeln('Ошибка при условии!Программа завершена!')
  23. end;
  24. begin
  25. one();
  26. end.
Немного подправил и в просторах интернета нашёл другую формулу для нахождения точки с суммой расстояний. И вот здесь интересно ваше мнение,правильно ли я двигаюсь. или же в 1-ом варианте нужна доработка.
Листинг программы
  1. program labwork1;
  2. var
  3. x1,y1,x2,y2:real;
  4. a,c,b,kb:real;
  5. procedure one();
  6. begin
  7. writeln('Введите координаты точки А');
  8. readln(x1,y1);
  9. writeln('Введите координаты точки В');
  10. readln(x2,y2);
  11. if x1<>x2 then
  12. begin
  13. kb:=sqrt(sqr(x2-x1)+sqr(y2-y1));
  14. kb:=kb+1;
  15. writeln('Сумма расстояний наименьшей точки равно = ',kb:0:2)
  16. end
  17. else
  18. writeln('Ошибка при условии!Программа завершена!')
  19. end;
  20. begin
  21. one();
  22. end.

Решение задачи: «На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек»

textual
Листинг программы
  1. program labwork1;
  2. var
  3.   x, x1, y1, x2, y2: real;
  4.   k, b: real;
  5. begin
  6. writeln('Введите координаты точки А');
  7. readln(x1, y1);
  8. writeln('Введите координаты точки В');
  9. readln(x2, y2);
  10. if (y1 = 0) and (y2 = 0) then
  11.  begin
  12.   if x1<x2 then  writeln('x любое значение от ',x1:0:1,' до ',x2:0:1)
  13.   else writeln('x любое значение от ',x2:0:1,' до ',x1:0:1);
  14.  end
  15. else if y1=0 then x:=x1
  16. else if y2=0 then x:=x2
  17. else
  18.  begin
  19.   if (y1 * y2 > 0) then y1 := -y1;
  20.   k := (y2 - y1) / (x2 - x1);
  21.   b := (x2 * y1 - y2 * x1) / (x2 - x1);
  22.   x := -b / k;
  23.  end ;
  24. writeln('Точка, удовлетворяющая условию, на оси x =  ', x:0:1)
  25. end.

Объяснение кода листинга программы

  1. Задаются координаты точек А и В
  2. Проверяется условие задачи: если координаты точек А и В на одной прямой, проходящей через начало координат, то находится точка, удовлетворяющая условию, и выводится её координата x
  3. Если условие не выполняется, то программа выводит сообщение о том, что прямая, проходящая через точки А и В, пересекает ось x в произвольном месте

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы