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