Задача. Принадлежит ли точка (х;у) фигуре на рисунке?
Решение:
Фигура, изображенная на рисунке, ограничена двумя дугами окружностей с центрами в начале координат. Для того, чтобы точка принадлежала ей необходимо, чтобы ее ордината была больше либо равнялась двум, а также, чтобы выполнялись такие неравенства: [latex]{x}^{2}+{y}^{2}>=16[/latex] и [latex]{x}^{2}+{y}^{2}<=36[/latex], где [latex]16[/latex] и [latex]36[/latex] — радиусы двух окружностей, возведенные в квадрат по формуле.
Код:
1 2 3 4 5 6 7 8 9 |
#include <iostream> using namespace std; int main() { double x,y; cin>>x>>y; cout<<( y >= 2 && x*x + y*y >= 16 && x*x + y*y <= 36 ? "YES" : "NO"); return 0; } |
Тесты:
x | y | Результат |
0 | 0 | NO |
-1 | 4 | YES |
6 | -2 | NO |
2.5 | 3 | NO |
Тут можно посмотреть решение задачи на ideone.com
— С рисунком Вы перемудрили. У Вас ведь две дуги окружности? Не эллипсы. Нужно исправить. И соответственно в программе чудеса. Радиус одной дуги 6 клеток, другой 4.
— Откажитесь от извлечения корня. Излишняя здесь и трудоёмкая операция.
— Зачем Вам разбивать одно предложение на абзацы?
— Сделайте осмысленные отступы. Прочтите, это.
— В программе должен быть один условный оператор, а не два. Ещё лучше обойтись тернарной операцией.
Игорь Евгеньевич, я исправила, проверьте, пожалуйста
Хорошо. Зачтено.x*x + y*y вычисляется дважды. Лучше перед проверкой условия записать вычисленное значение в переменную. Если будет время, исправьте.
Во только