Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит...

+644 голосов
809k просмотров

Составить программу, которая печатает true, если точка с координатами (х, у) принадлежит заштрихованной области, и false в противном Можно,пожалуйста,подробно


Информатика | 809k просмотров
+119

желательно оба,но мне хотя бы один,чтобы понять

+192

Какой из?

+40

Тут должна быть картинка

Дан 1 ответ
+47 голосов

Задание 1

На первой картинке мы имеем 3 прямые, образующие треугольник. По точкам определим их функции.

Вершины треугольника: (1; 4), (5; -4), (-5; -3).

Функция прямой по двум точкам:

\frac{x - x0}{x1 - x0} = \frac{y - y0}{y1 - y0}

Подставляем точки и получаем три функции:

l1(x) = \frac{x - 5}{1 - 5} = \frac{y + 4}{4 + 4} \Leftrightarrow y = -2x + 6

l2(x) = \frac{x - 5}{-5 - 5} = \frac{y + 4}{-3 + 4} \Leftrightarrow y = -0.1x + 4.5

l3(x) = \frac{x - 1}{-5 - 1} = \frac{y - 4}{-3 - 4} \Leftrightarrow 7x - 7 = 6y - 24 \Leftrightarrow y = (7x + 17) / 6

Точка находится в области, если y > l2(x0) И y < l1(x) И y < l3(x).

На Python это выглядит так. (Выводить функции не надо, это делается автоматически)

def get_line_by_two_points(x0: float, y0: float, x1: float, y1: float):

   def line_y(x: float):

       return (x - x0)/(x1 - x0) * (y1 - y0) + y0

   return line_y

l1 = get_line_by_two_points(1, 4, 5, -4)

l2 = get_line_by_two_points(-5, -3, 5, -4)

l3 = get_line_by_two_points(1, 4, -5, -3)

x = int(input("Enter an X value: "))

y = int(input("Enter a Y value: "))

if y < l1(x) and y > l2(x) and y < l3(x):

   print("Point is in the space!")

else:

   print("Point is NOT in the space!")

Задание 2

Теперь у нас 4 прямые.

Мы имеем трапецию. Две прямые видны сразу: y = 1 и y = 7.

Оставшиеся две найдем по двум точкам автоматически.

Код на Python:

def get_line_by_two_points(x0: float, y0: float, x1: float, y1: float):

   def line_y(x: float):

       return (x - x0)/(x1 - x0) * (y1 - y0) + y0

   return line_y

l1 = get_line_by_two_points(-3, 7, -6, 1)  # Левая наклонная

l2 = get_line_by_two_points(7, 1, 4, 7)  # Правая наклонная

x = int(input("Enter an X value: "))

y = int(input("Enter a Y value: "))

if 1 < y < 7 and y < l1(x) and y < l2(x):

   print("Point is in the space!")

else:

   print("Point is NOT in the space!")

===============================

Ваши оценки и отзывы помогают лучше оценить качество решения.

Если ответ удовлетворил, не забудь выбрать его как "Лучший".

Успехов в учёбе!

(6.8k баллов)