Задача. Принадлежит ли точка [latex]\left(x;y \right)[/latex] фигуре на рисунке?
Входные данные
Два числа [latex] x[/latex], [latex]y[/latex] — координаты точки.
Выходные данные
Слово «YES», если точка принадлежит треугольнику и «NO» , если не принадлежит.
[latex]x[/latex] | [latex]y [/latex] | Результат |
4 | -2 | NO |
2 | 1 | YES |
0 | 3 | YES |
5 | 0 | NO |
0 | -1 | NO |
Код программы
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#include <iostream> #include <cmath> using namespace std; int main() { double x, y; cin>>x>>y; if ((abs(x)+y<=4) && (y>=0)){ cout<<"YES"; } else cout<<"NO"; return 0; } |
Код программы на ideone.com
Решение
Точка будет принадлежать треугольнику только при таких [latex]x[/latex] и [latex]y[/latex], что сумма их модулей не превышает 4. При выполнении условия выводим на экран: «YES». В противном случае — «NO».
Мне понравилось как Вы лихо завернули с симметрией по [latex]x[/latex].
Вот только зачем было заворачивать ещё и по [latex]y[/latex]. Там ведь нет второй оси симметрии.
В результате программа выдаёт, что точка (0;-1) принадлежит фигуре. Добавьте к тестам.
Пожалуйста, будьте умницей, ограничьтесь одним условным оператором (или тернарной операцией). И не меняйте значение переменных. Просто напишите одно очень хитрое условие.
Да! Координаты int это плохо. Исправьте на double.
Спасибо, исправлено.
Хорошо получилось.
Зачтено.