// PascalABC.NET 3.3, сборка 1547 от 07.10.2017
// Внимание! Если программа не работает, обновите версию!
function InArea(p:(real,real)):boolean;
begin
var (x,y):=p;
Result:=(Abs(x)<=1) and (Abs(y)<=1) or<br> (y>=x-2) and (x>=0) and (y<=0)<br>end;
begin
var n:=ReadInteger('n=');
Randomize;
var P:=ArrGen(n,i->(Random(-11,22)/10,Random(-22,12)/10));
Writeln('Исходные точки (x,y)'); P.Println;
var R:=P.Where(x->InArea(x)).ToArray;
Writeln('Отобрано точек - ',R.Length);
Writeln('Отобранные точки (x,y)'); R.Println
end.
Пример
n= 20
Исходные точки (x,y)
(0,0.6) (1.1,1.1) (-0.9,0.3) (-0.7,-0.3) (1.3,-1.7) (-1,-1.6) (1.6,-1.5) (1.3,-0.2) (0.5,-0.7) (-0.7,-1.5) (1,-1.2) (1.9,0.6) (0.7,0.9) (1.3,-0.5) (1.6,0.4) (-0.8,0.2) (0.5,-1.8) (1.5,-1.1) (-0.6,-0.1) (0.9,0.1)
Отобрано точек - 10
Отобранные точки (x,y)
(0,0.6) (-0.9,0.3) (-0.7,-0.3) (1.3,-0.2) (0.5,-0.7) (0.7,0.9) (1.3,-0.5) (-0.8,0.2) (-0.6,-0.1) (0.9,0.1)