Форум программистов, компьютерный форум, киберфорум
Python: Tkinter
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 07.12.2022
Сообщений: 44

Найти такую точку Z(x, y), сумма расстояний от которой до остальных минимальна

10.12.2022, 00:08. Показов 1042. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На двумерной плоскости задано N точек с координатами (X1,Y1), (X2,Y2), ..., (Xn,Yn).
Написать программу, которая находит такую точку Z(x,y), сумма расстояний от которой
до остальных минимальна и:
а) Z - одна из заданных точек;
b) Z - произвольная точка плоскости.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.12.2022, 00:08
Ответы с готовыми решениями:

Как сделать так, чтобы в зависимости от растягивания или уменьшения окна все остальное также меняло размер?
К сожалению не нашел ничего в интернете

Что сделать чтобы при закрытии главного окна закрывались все остальные?
Есть окно MainWindow, в котором есть кнопка, нажав на которую открывается еще одно окно. При...

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

4
 Аватар для kapbepucm
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
10.12.2022, 22:42
Цитата Сообщение от Maria_Kim Посмотреть сообщение
а) Z - одна из заданных точек;
Python
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
from tkinter import Tk, Canvas, Label, Button, LEFT
from math import sqrt
WIDTH = 800
HEIGHT = 600
BG_COLOR = "white"
RADIUS = 10
COLOR = "blue"
DELAY = 1500
ACTIVE_COLOR = "red"
RESULT_COLOR = "green"
def canvasClick(event):
  x = event.x
  y = event.y
  index = canvas.create_oval(x-RADIUS, y-RADIUS, x+RADIUS, y+RADIUS, fill=COLOR)
  canvas.points.append((x,y))
  canvas.indexes.append(index)
  status.config(text="N=" + str(len(canvas.points)) + "\nсписок точек: " + str(canvas.points))
  if len(canvas.points) > 2:
    button.config(state="normal")
def buttonClick():
  canvas.unbind('<Button 1>')
  button.destroy()
  result.pack()
  nextStep()
def nextStep():
  if canvas.step > 0:
    canvas.itemconfig(canvas.indexes[canvas.step-1], fill=COLOR)
  for line in canvas.lines:
    canvas.delete(line)
  if canvas.step >= len(canvas.points):
    canvas.itemconfig(canvas.z[1], fill=RESULT_COLOR)
    for point in canvas.points:
      if canvas.z[0] == point:
        continue
      canvas.create_line(canvas.z[0], point, fill=RESULT_COLOR, width=RADIUS//4)
    result.config(text="минимальная длина расстояний: " +
      str(canvas.length) + "\nнайдена точка Z" + str(canvas.z[0]))
    return
  length = 0.0
  canvas.itemconfig(canvas.indexes[canvas.step], fill=ACTIVE_COLOR)
  current = canvas.points[canvas.step]
  for point in canvas.points:
    if current == point:
      continue
    line = canvas.create_line(current, point, fill=ACTIVE_COLOR, width=RADIUS//4)
    canvas.lines.append(line)
    x1 = current[0]
    y1 = current[1]
    x2 = point[0]
    y2 = point[1]
    length = length + sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1))
  if canvas.z is None:
    canvas.z = (current, canvas.indexes[canvas.step])
    canvas.length = length
  else:
    if canvas.length > length:
      canvas.z = (current, canvas.indexes[canvas.step])
      canvas.length = length
  result.config(text="Длина расстояний: " + str(canvas.length))
  canvas.step = canvas.step + 1
  root.after(DELAY, nextStep)
root = Tk()
canvas = Canvas(root, width = WIDTH, height = HEIGHT, bg = BG_COLOR)
canvas.step = 0
canvas.points = []
canvas.indexes = []
canvas.lines = []
canvas.z = None
canvas.length = 0
canvas.pack()
canvas.bind('<Button 1>', canvasClick)
status = Label(root, text="N=0", wraplength=WIDTH, justify=LEFT)
status.pack()
button = Button(root, text="найти точку Z", state="disabled", command=buttonClick)
button.pack()
result = Label(root, justify=LEFT)
root.mainloop()
1
0 / 0 / 0
Регистрация: 07.12.2022
Сообщений: 44
11.12.2022, 00:26  [ТС]
спасибо большое
0
2 / 2 / 0
Регистрация: 11.12.2022
Сообщений: 62
12.12.2022, 23:55
kapbepucm, Можете , пожалуйста, помочь с частью b в этом задании. "а" у меня получилось написать, а с b как раз какая то проблема. буду очень благодарен за помощь
0
 Аватар для kapbepucm
1567 / 740 / 321
Регистрация: 02.05.2020
Сообщений: 1,659
13.12.2022, 00:02
А я не знаю алгоритма поиска точки, сумма растояний от которой до любой из заданых была бы минимальна. В пункте "a"- я решал это банальным перебором.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
13.12.2022, 00:02
Помогаю со студенческими работами здесь

Как убрать расстояние между label и entry?
Код label_of_bmi = Label(root, text=&quot;Индекс массы тела: &quot;) label_of_bmi.grid(row=3, column=0,...

Матрицы с комплексными числами для вычисления расстояний, 2D
Комплексные числа, вместе с матрицами, хорошо помогают в 2D графике. Пример взят из области...

Расстояния между виджетами в макете
Всем привет. В представленном коде есть некоторая проблема. Когда я что-то ввожу в поле ввода...

Как написать программу которая будет находить точки пересечения прямых ?
То есть у тебя есть к примеру линейная функция.и программа должна начертить график(с этой функцией...

Нужен такой калькулятор, самый простой код, который только может быть


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru