Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346

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

12.02.2016, 18:27. Показов 4386. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Даны действительные числа х1,у1,х2,у2(х1 не равен х2),которые определяют 2 точки А(х1,у1) и В(х2,у2).На оси абцисс найти такую точку,сумма расстояний,которой до точек А и В-наименьшая для всех точек этой оси.

Аналитическая геометрия 9-10 класс,нашёл формулу по нахождению расстояния и получению сумму но результаты совсем не те.

Сначала решил решить при помощи уравнения прямой через 2 точки с нахождением коэффициента и приравниваю к нулю,и последующего нахождения х.
Но выяснилось что такой код неверен и неверно считает коэффициенты.

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

Немного подправил и в просторах интернета нашёл другую формулу для нахождения точки с суммой расстояний.
И вот здесь интересно ваше мнение,правильно ли я двигаюсь.
или же в 1-ом варианте нужна доработка.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
program labwork1;
var
x1,y1,x2,y2:real;
a,c,b,kb:real;
 
procedure one();
begin
writeln('Введите координаты точки А');
readln(x1,y1);
writeln('Введите координаты точки В');
readln(x2,y2);
if x1<>x2 then 
begin
kb:=sqrt(sqr(x2-x1)+sqr(y2-y1));
kb:=kb+1;
writeln('Сумма расстояний наименьшей точки равно = ',kb:0:2)
end
else 
writeln('Ошибка при условии!Программа завершена!')
end;
 
begin
one();
end.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
12.02.2016, 18:27
Ответы с готовыми решениями:

На оси абсцисс найти такую точку, сумма расстояний от которой до точек А и В наименьшая для всех точек этой оси
Даны действительные числа х1,у1,х2,у2,(х1х2), которые определяют две точки А(х1,у1), В(х2,у2). На оси абсцисс найти такую точку, сумма...

На оси абсцисс найти такую точку, сумма расстояний от которой до точек А и В наименьшая для всех точек этой оси
Даны действительные числа х1,у1,х2,у2,(х1 не равен х2), которые определяют две точки А(х1,у1), В(х2,у2). На оси абсцисс найти такую точку,...

Найти точку, у которой сумма расстояний до других точек наименьшая
Пользователь вводит координаты точек. Как найти точку, сумма расстояний до других точек наименьшая? Добавлено через 29 минут Никто...

9
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.02.2016, 19:17
Несколько вариантов
y1=y2=0 любая точка в диапазоне [x1..x2]
иначе если y1=0 или y2=0, то x=x1 или x=x2
если точки по разные стороны от оси Х то точка есть пересечение прямой проходящей через эти точки и осью Х.
если точки по одну сторону от оси Х, то перенести одну из них на другую сторону и как в предыдущем случае.
1
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8645 / 4480 / 1669
Регистрация: 01.02.2015
Сообщений: 13,888
Записей в блоге: 11
12.02.2016, 19:18
Там простая математика. Если y1 и y2 на разных полуплоскостях (т.е. имеют разные знаки), то искомая точка - пересечение оси абсцисс с прямой, проходящей через точки A и B. Это доказывается из соображений, что прямая - кратчайшее расстояние между двумя точками и AC+CB < AD+DB
Миниатюры
На оси абцисс найти такую точку, сумма расстояний, которой до точек А и В-наименьшая для всех точек  
0
Модератор
Эксперт по электронике
 Аватар для ФедосеевПавел
8645 / 4480 / 1669
Регистрация: 01.02.2015
Сообщений: 13,888
Записей в блоге: 11
12.02.2016, 19:19
+1 Puporev. Я хотел в 2 приёма ответить, но долго чухался.
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.02.2016, 19:21
Одновременно писали..
0
58 / 16 / 26
Регистрация: 07.02.2015
Сообщений: 346
12.02.2016, 21:01  [ТС]
Меня при сдаче этой задачки смутили простым примером.

Пусть есть 2 точки А(2.0,1.0),а точка В(6.0,1.0) в итоге в качестве ответа нарисовали точку 4.1 и спросили твоя программа так подсчитает,она так не считала.
Кстати это правильно или меня надули?

Получается никаких уравнений прямых с 2-мя точками не надо и здесь я просто должен перебирать условия?
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.02.2016, 21:09
Цитата Сообщение от redseven Посмотреть сообщение
Получается никаких уравнений прямых с 2-мя точками не надо
Надо, перенеси точку например (2.0,1.0) в (2.0,-1.0);
Составь уравнение прямой, проходящей через точки (2.0,-1.0) и (6.0,1.0)
Найди ординату точки пересечения этой прямой с осью Х.

Добавлено через 2 минуты
Получится х=4
0
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
12.02.2016, 21:39
Лучший ответ Сообщение было отмечено redseven как решение

Решение

Нагородил условий, но вроде работает:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
program labwork1;
 
var
  x, x1, y1, x2, y2: real;
  a, c, b, kb, k: real;
 
procedure one();
begin
  writeln('Введите координаты точки А');
  readln(x1, y1);
  writeln('Введите координаты точки В');
  readln(x2, y2);
  
  if (y1 = 0) and (y2 = 0) then x := (abs(x1) + abs(x2)) / 2 else 
  if (y1 * y2 = 0) then x:=sqrt(sqr(x2-x1)+sqr(y2-y1)) else
    if (x1 <> x2)   then 
    begin
      if (y1 * y2 > 0) then y1 := -1 * y1;
      k := (y2 - y1) / (x2 - x1);
      b := (x2 * y1 - y2 * x1) / (x2 - x1);
      x := -b / k;    
    end ; 
      writeln('Точка, удовлетворяющая условию, на оси x =  ', x:4:4)
end;
 
begin
  one();
end.
1
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,168
12.02.2016, 22:15
Лучший ответ Сообщение было отмечено redseven как решение

Решение

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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.
1
318 / 208 / 162
Регистрация: 08.12.2015
Сообщений: 863
12.02.2016, 22:28
Puporev, точно, перетрудился)) и навертел. Хотя все проще
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
12.02.2016, 22:28
Помогаю со студенческими работами здесь

Найти такую точку множества, сумма расстояний от которой до остальных его точек максимальна
Дано линейное множество A из N точек. Найти такую точку из данного множества, сумма расстояний от которой до остальных его точек...

Найти такую точку заданного множества точек на плоскости, сумма расстояний от которой до остальных минимальна
Найти такую точку заданного множества точек на плоскости, сумма расстояний от которой до остальных минимальна. Добавлено через 32...

Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна
осталась последняя задача по Си, от неё зависит зачёт. Условия такие: найти такую точку заданного на плоскости множества точек, сумма...

Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна
Всем привет! Нужна ваша помощь! Искал задачку нашел только на С++ и С# а вот на java не могу найти, помогите с решением! Найти такую...

Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна
Даны точки(неограниченно) с координатами. Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru