А не слишком сложно (в смысле записи, понимать такое условие тяжело)?
Код:
function IsValid(x,y : Extended) : Boolean;
begin
Result := (sqr(x) + sqr(y) < 9); // внутири окружности
If Result Then
Begin
If x < 3
Then Result := (y < -1 * x -3) // Первая область
Else
If x < 1.5
Then Result := (y < x) // Вторя область
Else
If x < 1
Then Result := (y < x -3); // Третья область
// Четвертая область - просто в окружности, условие выше.
end;
Согласен, так длиннее, зато понятнее.
Кстати, точки границ областей можно и из уравнений высчитать. Просто в этих заданиях они простые, так что можно и на глаз посчитать.