А59а

Задача:

Даны действительные числа [latex]x[/latex], [latex]y[/latex]. Определить, принадлежит ли точка с координатами  [latex]x[/latex], [latex]y[/latex] заштрихованной части плоскости.

Снимок

 

x y x*x+y*y r Результат Комментарий
1 1 2 1 Не принадлежит Пройден
0 0 0 1 Принадлежит Пройден
0,5 0,3  0,34 1  Принадлежит  Пройден

 

 

Решение:

Уравнение окружности задается формулой: [latex]\left(x-x_{0} \right)^{2}+\left(y-y_{0} \right)^{2}=r^{2}[/latex].

Так как у нас единичный круг, то [latex]r=1[/latex] и уравнение окружности можно записать следующим образом: [latex]x^{2}+y^{2}=r[/latex].

Что бы точка принадлежала окружности, нужно чтоб выполнялось условие [latex]x^{2}+y^{2}\leq r[/latex].

Если же [latex]x^{2}+y^{2}>r[/latex], то точка не будет принадлежать заштрихованной части.

Работу программы можно посмотреть тут.

 

 

Related Images:

8 thoughts on “А59а

  1. Есть существенное замечание. Функция pow — не целочисленная. А Вы работаете с целыми числами, что очень хорошо для геометрической задачи. Всегда, если есть такая возможность, геометрию стоит решать в целых числах.
    Так вот, при больших значениях координат, pow возвращает неточное значение, потому что принцип хранения целых и дробных чисел различен. К тому же, pow вычисляет значения рядами Фурье, что само по себе не очень точно. гораздо лучше вычислять квадраты в явном виде, как (x — x0) * (x — x0) — это и быстрее и точнее.

  2. Дополню.
    — «координаты радиуса» — интересное, но бессмысленное в данном контексте словосочетание. Пожалуйста, решите именно эту задачу. Не нужно никаких странных модификаций условий.
    — «Координаты x» — аналогично.
    — «Координаты y» — аналогично. Стоит погуглить, что такое координаты..
    — «Возьмем … за a» — лучше обозначить через а.
    — Последнее предложение не дописано? «Если….» … то что?
    — Понимаю, что Вам трудно придумать метки. Подскажу. Нужно что-то в духе — «заштрихованная область», «единичный круг», «принадлежит», «точка»

  3. Только заметил. «Даны действительные числа». Тогда правильно было бы сделать их double, а не int. И все равно возводить в квадрат с помощью pow не стоит 🙂

  4. В общем все правильно теперь, только потерялась строчка 15 с закрывающей фигурной скобкой. Также в строчках 11 и 13 необходимо использовать больший отступ, чтобы показать, что они находятся в условном операторе.

    В else условие if((x*x)+(y*y)>r) писать уже не обязательно, т.к. если не выполнено первое условие, то автоматически выполнено второе.

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