Mif 17.12

Условие задачи

Принадлежит ли точка [latex] (x;y) [/latex] фигуре на рисунке?17.12

Код

 

Тесты

Входные данные
Выходные данные
x y
9 0 No
-5 3 No
1 2 Yes
-3 5 Yes
1 -1 Yes
4 -4 No

Решение

  1. Сначала ищем длину отрезка ([latex] a [/latex]) от начала координат к точке [latex] (x;y) [/latex]  по формуле: [latex]\sqrt{{({x}_{0}-x)}^{2}+{({y}_{0}-y)}^{2}}[/latex], где              [latex]({x}_{0};{y}_{0})[/latex] — координаты начала координат.
  2.  Дальше проверяем, если [latex]a^{2}\leq 36[/latex] (т.е. точка находится в круге, т.к радиус четверти круга равен 6, а, возведя [latex]a[/latex] в квадрат, радиус также нужно возвести в квадрат) и [latex] (x;y) [/latex] находятся в первой четверти координат, то программа выводит «Yes» (можем возвести радиус ([latex] a=\sqrt{x^{2}+y^{2}} [/latex] )в квадрат,т.к. радиус не может быть отрицательным).
  3. Также, если сумма [latex] x + y [/latex] в четвертой четверти координат не превышает 6, то точка принадлежит треугольнику и программа выводит «Yes».
  4. В том случае, если тока не принадлежит фигуре, программа выводит «No».

Ссылки

 

11 thoughts on “Mif 17.12

  1. — Условие для сектора окружности верное, а вот нижний треугольник Вы описали неверно. Зачем-то опять использовали уравнение окружности, хотя там прямая линия? Естественно, Вы не сделали ни одного теста для этого случая. Добавьте, пожалуйста в тесты точки (1;-1) и (4;-4).
    — При проверке принадлежности кругу лучше избегать извлечения корня (долго и с погрешностью) проще возвести радиус в квадрат.
    — В математике пишут [latex]\leq[/latex], а не [latex]<=[/latex].
    — В формуле для расстояния пропущены скобки под корнем. Так конечно смешнее, но…
    — В разных местах Вы по-разному обозначаете точку через её координаты. Мне кажется, что лучше остановиться на таком — (4;2).

    Теперь займёмся отступами в программах — во всех Ваших программах есть эта проблема. Посмотрите здесь какие могут быть варианты.

    • Исправила недочеты:
      1.Изменила описание для нижнего треугольника, а также добавила в тесты точки (1;-1) и (4;-4).
      2.Возвела неравенство с корнем в квадрат.
      3.Скорректировала знак неравенства и добавила недостающие скобки под корнем.
      4.Постаралась сделать отступы (здесь и в остальных программах) согласно одному из стилей статьи.

  2. — С отступами совсем не получается разобраться? Нет времени? В четверг сделаете у доски доклад на тему отступов. Подготовьтесь, пожалуйста. Или придётся выступать экспромтом.
    — Зачем здесь модули? (abs(x)+abs(y))<=6. Обычное уравнение прямой. Конечно всё будет работать правильно. Но бессмысленно брать модуль х если Вы проверили что число положительное. И зачем модуль у, если Вы знаете, что число отрицательное? Будьте проще. В программировании. - Рисунок нужно переделать. Т.е. выбросить. По сравнению с образцом, Вам нужно изменить одну строку path. Просто задайте отрезок, дугу окружности и замкните. Это совсем просто и очень коротко - несколько нажатий на клавиши. Либо исправьте имеющийся рисунок и готовьтесь объяснить, что значат все эти Ваши "points="210.28823852539062,253.5858154296875 294.1705017089844,253.5858154296875 210.28823852539062,167.9200897216797 126.40597534179688,253.5858154296875 210.28823852539062,253.5858154296875 " transform="rotate(-45.36493682861328 210.28823852539065,210.75296020507807)" и прочие художества.

  3. — Вы пишите «(x+y*(-1))<=6". А что плохого в том, чтобы просто написать x - y <= 6? - Два вложенных условных оператора с повторной проверкой того, что x неотрицательный это недопустимо. Вам приходится дважды писать один и тот же код. Пожалуйста, оставьте один условный оператор. Для этого объедините оба условия логической операцией или ||.

Добавить комментарий