Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Задача 2.4.2. Даны несколько населенных пунктов с координатами своего месторасположения.
- # В пункте с номером k установлена радиостанция с радиусом действия r км.
- # Определить сколько населенных пунктов входит в ёё радиус действия включая саму эту деревню.
- import math
- ## Запишем функцию для расчета расстояний между объектами по их координатам
- def compute_len(x1, x2, y1, y2):
- len_line = math.sqrt((x1 - x2)**2 + (y1-y2) ** 2)
- return len_line
- ## Введем исходные данные
- #ox = '23 56 62 12 30 71 88 17 49 34 47 99 18 75 37'# координаты населенных пунктов по оси ОХ - УДАЛИТЬ НА САЙТЕ
- ox = input() #- координаты по оси Х, ДЛЯ ЗАПУСКА НА ПЛАТФОРМЕ
- #oy = '54 71 26 59 97 45 42 63 42 87 65 68 44 59 43'# координаты населенных пунктов по оси ОУ - УДАЛИТЬ НА САЙТЕ
- oy = input() #- координаты по оси У, ДЛЯ ЗАПУСКА НА ПЛАТФОРМЕ
- # Конвертируем строки в списки вещественных чисел
- x = [float(i) for i in ox.split()] # сразу создаём список вещественных чисел, коориднаты по оси X
- y = [float(i) for i in oy.split()] # координаты по оси Y, вещественные числа
- #print(coord_oy)
- #k = 1 #номер населенного пункта УДАЛИТЬ НА САЙТЕ
- k = int(input()) # Номер населенного пункта
- #r = 53 # радиус действия радиостанции
- r = float(input()) # Радиус действия радиостанции
- ## Cписок из значений расстояний между населенными пунктами, исходя из их координат.
- distances = [compute_len(x[k], x[i], y[k], y[i]) for i in range(len(x))]
- #print(distances, '- список расстояний') # выводим для наглядности
- # 3. Написать строки в которых значения нового списка будут сравнены со значением радиуса действия
- # И выведем на экран количество этих значений
- count = 0
- for d in distances:
- if d <= r:
- count = count + 1
- print(count) # Пишем вне цикла, значение получается верным исходя из рассчитанных значений, но почему в нашем примере верный от 6? Если мы руками может посчитать что всё-таки программа верно считает!
- #Цель: сформировать список distanses до точек, которые входят в радиус действия радиостанции.
- # Для этого нужно сперва от точки №7 посчитать расстояния до всех точек и вбить эти значения в этот список
- #coord_vill = [[coord_ox[i], coord_oy[i]] for i in range(len(coord_oy))] # Излишне. Координаты каждого населенного пункта в одном списке
- #print(coord_vill) #-testok
- #coord_vil = coord_vill[vil-1] # тестирую вывод каждого вложенного списка
- #coord_vil2 = coord_vill[vil-2]
- #coord_vil_2 = coord_vil[vil] # ПОЧЕМУ ПРИ ВЫВОДЕ ЭТОГО ИНДЕКСА ВЫХОДИТ ТОЛЬКО ОДНО ИЗ ЧИСЕЛ СПИСКА, ПРОБУЮ СПЕРВА МЕЖДУ ДВУМЯ ТОЧКАМИ ПОСЧИТАТЬ РАССТОЯНИЕ
- #print(coord_vil) #вывод значения координат деревни от которой будем плясать
- #print(coord_vil2)
- # Реализовать функцию для вычисления длины отрезка с координатами концов (xi, yi) и (x1, y1).
- #def compute_len(x[i+1], x[i], y[i+1] y[i]):
- # len_line = sqrt((x[i+1] - x[i]) ** 2 + (y_1 - y_0) ** 2)
- # return len_line
- #dist = []
- #c = compute_len(float(x[i]), float(y[i+1]), float(x[j]), float(y[j+1]))
- #print(c)
- #def line_comppute(coord_vil[i], coord_vil[j]):
- #len_line = math.sqrt((abs(float(coord_vil[0]) - float(coord_vil2[0])) ** 2 + (abs(float(coord_vil[1]) - float(coord_vil2[1])) ** 2)))
- # правильно подставить значения в формулу для расчета расстояния между точками, т.е. правильно подставлять в цикл значения из каждого подцикла
- #print(len_line, 'len_line')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement