Задача. Принадлежит ли точка (х;y) фигуре на рисунке?
В условии не указывается, принадлежат ли фигуре точки на ее границах. В своем решении я предполагаю, что такие точки тоже считаются частью фигуры.
Тесты
[latex]x[/latex] | 0 | 3 | 0 | 6 | 6 | -1000 |
[latex]y[/latex] | 0 | 2 | 6 | 0 | 6 | 48000 |
Результат | NO | YES | YES | YES | NO | NO |
Алгоритм
По рисунку видно, что заданная фигура ограничена осями координат и двумя прямыми: [latex] y = 6 — x [/latex] сверху и [latex] y = 4 — 2 \cdot x [/latex] снизу. То есть, решением является пересечение решений неравенств:
[latex]x \geq 0, y \geq 0, y \leq 6 — x, y \geq 4 — 2 \cdot x[/latex]
Если координаты точки удовлетворяют всем этим условиям, программа выводит «YES», в противном случае — «NO».
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include<iostream> using namespace std; int main() { int x,y; cin >> x >> y; if ( x >= 0 && y >= 0 && y <= 6 - x && y >= 4 - 2*x ) //условие принадлежноcти точки данной фигуре { cout << "YES"; return 0; } cout << "NO"; return 0; } |
— Сделайте правильные отступы. Я уже давал ссылку на где об этом можно прочитать?
— Пожалуйста в тексте и на рисунке сделайте начертание символов одинаковым. Таким — [latex]x[/latex].
— У Вас требуется определить принадлежность фигуре. Ответов 2. Значит нужна проверка одного условия и ветвление. А не 3 условия с тремя ветвлениями и одинаковыми ответами.
— Фигура ограничивают 4 отрезка. Значит условие состоит из четырёх «неравенств», соединённых через &&. Неравенства получаются из уравнений линий, образующих границы фигуры.
— Не нужно делать «сложный оператор, определяющий принадлежность точки к объемлющему прямоугольнику». Таких «объемлющих прямоугольников» бесконечно много. И они все не нужны.
Кстати, это не «сложный оператор», обычный «if». Но я догадываюсь, что Вы имели в виду.
Спасибо, все исправила.
Не совсем. Вы совершенно справедливо написали что точки на границе «тоже считаются частью фигуры». В программе это не так.
Спасибо что указали на ошибку. Теперь все условия совпадают.
Молодец. И рисунок хороший. Зачтено.