Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Задача "Охотники" в Паскаль (http://www.tehnari.ru/f41/t60447/)

Gylij 28.11.2011 19:27

Задача "Охотники" в Паскаль
 
Задача Охотник
Сезон охоты очень не долог, и поэтому оставшуюся часть года заядлые охотники развлекают себя тем, что стреляют по мишеням в тире. Тир представляет собой плоскость, на которой расставлены мишени. Размерами мишеней можно пренебречь и считать их точками с координатами (x, y). Также известно, что мишени сделаны из картона, поэтому за один выстрел можно поразить сразу все мишени, стоящие на линии выстрела. В начале координат стоит охотник и у него остался последний патрон. Охотник хочет использовать его эффективно – то есть за один выстрел поразить как можно больше целей. Требуется написать программу для расчета этого количества.

AlexZir 29.11.2011 16:08

Как вариант, в зависимости от параметров линии выстрела можно вывести уравнение прямой в декартовых координатах и проверять, принадлежит ли точка-мишень этой прямой. Соответственно, перебрать все известные точки-мишени и вывести количество принадлежащих.

Vladimir_S 29.11.2011 16:22

Цитата:

Сообщение от AlexZir (Сообщение 625794)
Как вариант, в зависимости от параметров линии выстрела можно вывести уравнение прямой в декартовых координатах и проверять, принадлежит ли точка-мишень этой прямой. Соответственно, перебрать все известные точки-мишени и вывести количество принадлежащих.

А на самом деле - еще проще: охотник-то находится в начале координат, т.е. это не прямые даже, а вовсе радиусы. Т.е. на одной линии находятся точки с одинаковым отношением Y/X. Но! Тут-то начинаются заморочки: нужно во-первых, обойти особую точку X=0, т.е. мишени, лежащие на оси Y, рассмотреть отдельно, а во-вторых - сделать пересчет координат мишеней, лежащих во II и III квадрантах, дабы отличить их от тех, что лежат в IV и I, соответственно (тангенсы у этих пар могут совпадать), каковое есть дело муторное. Впрочем, можно рассмотреть случаи X>0 и X<0 отдельно.

AlexZir 29.11.2011 17:27

Предлагаю последовательно перемещать Х0 (начало координат) по оси абсцисс от левого края экрана до правого и по оси ординат от верхнего края до нижнего, для каждой текущей точки Х0 делать пересчет координат мишеней. Это возможно в силу произвольности нахождения точки на плоскости.

Если бы задачка была простой, ее бы не задали в качестве лабораторки :))


Часовой пояс GMT +4, время: 10:11.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.