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

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

10.12.2022, 00:08. Показов 1022. Ответов 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
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
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
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,654
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
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
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