Задача
Принадлежит ли точка [latex]\left( x;y \right)[/latex] фигуре на рисунке?
Тесты
[latex]\left( x;y \right)[/latex] | Ответ | |
1. | (1;6) | нет |
2. | (-5;3) | нет |
3. | (0;0) | нет |
4. | (3.5;1.7) | да |
5. | (2;4) | да |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <cmath> using namespace std; int main() { double x,y; cin >> x >> y; if (x>=0 && y>=0 && ((x*x+y*y)<=36) && (y>=(3-x))){ cout << "YES"; } else cout << "NO"; return 0; } |
Решение
Рисунок находится в I четверти, следовательно только точка с положительными [latex]x[/latex] и [latex]y[/latex] может принадлежать этому рисунку. Далее необходимо воспользоваться уравнением окружности [latex]\left(x-a \right)^2+\left(y-b \right)^2=R^2[/latex], т.к. центр окружности(сегмент которой изображен на рисунке) находится в начале координат формула имеет такой вид: [latex]x^2+y^2=R^2[/latex]. Также рисунок ограничен прямой [latex]y=3-x[/latex]. Если [latex]x>0[/latex] и [latex]y>0[/latex] , [latex]R\leq6[/latex] , [latex]y\geq3-x[/latex], то точка принадлежит фигуре на рисунке.
— Зачем Вы проверяете x<=6 && y<=6? Разве фигура ограничена такими линиями?
— Зачем вы используете модуль y>=abs(x-3)? Вы только что проверили, что х>=0, тогда зачем модуль?
Вы пишите » Сегмент окружности ограничен хордой». Какая же это хорда? Хорда соединяет две точки на окружности. У Вас вульгарнейшая прямая [latex]y = 3 -x[/latex] без малейшей экзотики.
— Не нужно дважды говорить «NO». Просто сделайте одно условие, со всеми Вашими четырьмя границами и скажите «нет» если нет, «да» если да, а остальное от лукавого (Мф, 5, 37).
Кстати! Самое главное забыл. Молодец! Программа работает абсолютно правильно. Так что у нас просто рефакторинг и оптимизация кода.
Спасибо, исправила.
Хорошо. Зачтено.
Но у меня вс
Хорошо. Зачтено.
Но у меня всё ещё осталось замечание по этой проверке — sqrt(x*x+y*y)<=6. Очень неудачно сформулировано условие - придётся каждый раз долго и с погрешностями вычислять значение корня квадратного. А зачем? Разве в неравенстве для задания круга есть какой-то корень?