Другие языки программирования и технологии

Задачка в Паскале

составьте пожалуйста программу при вводе значений, которая бы говорила принадлежит точка графику или нет.!
Где-то так:

Program gr;
var
x, y, u, r, r2 : Real;
begin
Write('x='); Read(x);
Write('y='); Read(y);
y := abs(y); { не важен знак, так как график симметричен у нас и y всегда +}

{ если хоть одна точка больше по модулю 2, то уже не принадлежит }
if (abs(x)>2) or (y>2) then WriteLn('No')
else { иначе дальше проверяем }
begin
{ проверка для некоторых линий }
if (x=0) or (x=-2) then WriteLn('Yes')
else if (y=0) and ((x<=0) or (x=2)) then WriteLn('Yes')
else { более сложные вычисления }
begin
u := ArcTan(y/abs(x)); {угол в радианах треугольника}
{ если x < 0}
if x < 0 then
begin
if (u >= 0) and (u <= PI/4) then WriteLn('Yes') else WriteLn('No');
end
else { при x > 0}
begin
r := sqrt(x*x+y*y); { радиус }
{ если радиус больше 2,то не подходит }
if r > 2 then WriteLn('No')
else
begin
r2 := sqrt((x-1)*(x-1)+y*y); { радиус от координаты (1;0) }
// если радиус меньше 1, то не подходит
if r2 < 1 then WriteLn('No')
else WriteLn('Yes');
end;
end;
end;
end;

end.
BI
Boris Ivanov
96 413
Лучший ответ
в ЛС напишу если прям срочно надо, но только объединять не буду, только куча условий, если надо будет сам их раскидаешь.. .
А так алгоритм очень прост.. .
X>0 тогда рассматриваешь закрашенный круг и потом из него выбиваешь внутренний под новым условием
X<0 тогда по формуле треугольника смотришь и все.. .
Тут тупо применение геометрический формул