Advertisement
Vitaliy_Novichikhin

2.4.2Work

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