Задача. Принадлежит ли точка (х;у) фигуре на рисунке?
Решение
Данный рисунок находится в I и IV четверти, следовательно [latex] x [/latex] может быть только положительным, а [latex] y [/latex], как положительным, так и отрицательным. На рисунке нам даны две окружности. Одна с центром в точке (-0.5;0) и радиусом 3, а другая (0;0) и радиусом 5. Нам нужно, чтобы наша точка находилась только в первой и четвертой четвертях и при этом, чтоб выходила за пределы первой окружности, и чтоб не выходила за предел второй окружности. Для того, чтобы узнать принадлежит ли точка данной фигуре нужно подставить значения и проверить будут ли они принадлежать рисунку с помощью уравнений двух окружностей и описанных выше условий.
Уравнение окружности выглядит так: . Подставим значения центров окружностей и получим, что для первой окружности уравнение имеет вид:[latex](x+0.5)^{2}+y^{2}=3^{2}[/latex], а для второй: [latex] x^{2}+y^{2}=5^{2}[/latex].
Код
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <iostream> using namespace std; const int r1 = 3; const int r2 = 5; int main() { double x, y; cin >> x >> y; cout << (x > 0 && ((x + 0.5) * (x + 0.5) + y * y >= r1 * r1) && (x * x + y * y <= r2 * r2) ? "yes" : "no"); return 0; } |
Тесты
Входные данные | Выходные данные |
4 5 | no |
1 2 | no |
2 -2 | yes |
Задача взята отсюда.
Код программы на Ideone.com.
— Вы пишите «принадлежит ли точка данному рисунку». Такая задача не ставится. Нужно только оценить принадлежность фигуре (у Вас она выделена зелёным цветом).
— Вы пишите «но в качестве радиусов этих двух окружностей я взяла переменные a и b». Что Вы имеете ввиду? Фигуру ограничивают два отрезка и две дуги окружностей радиусом 5 и около 3. Какие переменные радиусы?
— Вы пишите «Радиусы этих окружностей не должны превышать значения 3 и 5». Каких окружностей? У Вас две дуги. Известного радиуса. Больше никаких окружностей в задаче нет. Или объясните толком свой подход или перепишите текст.
— Не нужно извлекать корень. Проще воспользоваться той формулой, которую Вы написали. Правда придётся возводить радиусы в квадрат, но я уверен, Вы помните таблицу умножения.
— Разберитесь как делать отступы и поправьте их в своей программе. На ближайшей практике сделаете доклад на эту тему.
— Уберите толпу cin.get() в конце программы. На ideone это Вам не поможет, а если Вы пользуетесь другой IDE, то выясните как выполнить до указанной точки.
— Сделайте SVG сами. Не используйте графически редактор. Вы же вычислили оба радиуса. Что еще нужно.
Давайте по сути задачи. У Вас 1 (одна) зелёная область. Для проверки принадлежности, пишется 1 (один) условный оператор или тернарная операция. Фигуру ограничивают 4 (четыре) линии. Значит нужно написать столько же (четыре) условия соединённые логическим «и» (&&). Уверен у Вас получится.
Исправила(более подробно описала). Проверьте, пожалуйста
Что это такое? cy=»179.499998″ cx=»172.500002″ d=»m-93.846146,228.199997l-78.153839,148.800034l351.692276,0l0,-347.200005l156.307709,0l0,-148.799995l-273.538456,0l0,347.199966l-156.30769,0z».
Вы не захотели просчитать свой рисунок, а просто тыкали мышкой. При выбранной тактике, Вам нужно написать код для двух окружностей и одного прямоугольника. ВЫЧИСЛИТЬ координаты, а не тыкать мышкой и наобум подбирать цвета. Нужно смотреть в КОД рисунка, а не играться с картинками.
Игорь Евгеньевич, исправила. Проверьте, пожалуйста.
Всё хорошо. Зачтено.
Кстати, автор рисунка в задачнике скорее всего ошибся. Задумывалось провести меньшую окружность через точку (3; 0). Иначе какой смысл в сетке?
Но Вы всё сделали вполне логично. Хотя меньшая окружность при таком центре и радиусе уже не проходит через точки (0;3) и (0;-3).