Задача. Принадлежит ли точка (х;у) фигуре на рисунке?
[latex]x[/latex] | [latex]y[/latex] | Вывод |
-3 | 0 | no |
-1.5 | 2 | yes |
2 | 5 | yes |
3 | 4 | yes |
3 | 3 | 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>=-4)&&(x<=-1)&&(y>=1)&&(y<=7))||((x>=-1)&&(x<=3)&&(y>=4)&&(y<=7))) ? "yes" : "no"); return 0; } |
Алгоритм решения:
В данной программе проверяются допустимые значения [latex]x[/latex] и [latex]y[/latex], при которых точка с данными координатами может принадлежать данной фигуре. Если координаты соблюдают все условия, то программа выводит «yes», т.е. принадлежит . В остальных случаях на экран выводится «no».
Возможно эта страничка поможет Вам с подготовкой рисунка. Пока он… не очень.
Ошибку, которая не позволила Вам загрузить на сайт рисунок в формате SVG я уже исправил.
Исправил рисунок.
Хорошо. Теперь займёмся программой. Она работает правильно, но есть замечание.
Сравним два кода:
и
Первый случай — штатное использование тернарной операции. Второй — трюк и завуалированный условный оператор. Лучше обойтись без него.
Исправил код и теперь использую тернарную операцию.
Вы не совсем меня поняли. Такое использование тернарной операции недопустимо с точки зрения стиля.
Экая невезучая задача. Теперь ссылка на ideone с кодом потерялась…
И, хоть это и не имеет существенного значения, в строке cout << ((((x>=-4)&&(x<=-1)&&(y>=1)&&(y<=7))||((x>=-1)&&(x<=3)&&(y>=4)&&(y<=7))) ? "yes" : "no"); действительно нужны только две скобки — самые внешние.