PascalABC.NET 3.4.0, сборка 1670 от 23.05.2018
Внимание! Если программа не работает, обновите версию!
procedure В_Круге(x,y:array of real; var r:array of boolean);
// Каждый элемент r[i] равен True, если точка с координатами (x[i],y[i])
// лежит внутри единичного круга c центром в точке (2;-3)
begin
r:=x.Zip(y,(p,q)->Sqr(p-2)+Sqr(q+3)<1).ToArray<br>end;
procedure ПроизведениеАбсцисс(x:array of real; r:array of boolean;
var res:real);
begin
res:=x.Where((v,i)->r[i]).Aggregate(1.0,(p,q)->p*q)
end;
procedure СуммаОрдинат(y:array of real; r:array of boolean;
var res:real);
begin
res:=y.Where((v,i)->r[i]).Sum
end;
begin
var n:=ReadInteger('n=');
var x:=SeqRandom(n,0,40).Select(t->t/10).ToArray;
Writeln('Массив Х:'); x.Println;
Writeln('Введите элементы массива Y:');
var y:=ReadArrReal(n);
var b:=new boolean[n];
В_круге(x,y,b);
var Px,Sy:real;
ПроизведениеАбсцисс(x,b,Px);
СуммаОрдинат(y,b,Sy);
Writeln('Произведение абсцисс ',Px,', сумма ординат ',Sy)
end.