сделать в паскале при помощи процедур
Приложения:
Ответы на вопрос
Ответил Аноним
0
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
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.
Внимание! Если программа не работает, обновите версию!
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
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.
Приложения:
Ответил Аноним
0
Замечание: PascalABC.NET позволяет использовать в именах не только латинские буквы и цифры, но также буквы других алфавитов - кириллицу, греческие и т.д.
Ответил Аноним
0
Вы согласны, что программа из-за этих процедур получилась длиннее и даже менее понятной? )))
Ответил Аноним
0
Это потому, что тело каждой процедуры содержит одну строку и проще написать ее в основной программе, чем городить заголовок процедуры, параметры, вызов этой процедуры...
Ответил Аноним
0
Видимо, смысл задания был в том, чтобы показать, как процедуры упрощают программу, а получился противоположный эффект.
Новые вопросы