Сделать в паскале при помощи процедур

0 голосов
83 просмотров

Сделать в паскале при помощи процедур


image

Информатика (85 баллов) | 83 просмотров
0

Эта задача была решена. Вчера или позавчера - точно не помню.

0

там без процедур

0

Может быть, не помню, хоть и сам решал.

0

Она слишком простая, процедуры только увеличат объем писанины )))

0

ну вот увы(9(

0

Хороший пример того, как НЕ НАДО использовать процедуры )))

0

так могли бы помочь?)

0

Сейчас сделаю из той...

0

спасибо заранее))

Дан 1 ответ
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<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.

image
(150k баллов)
0

Замечание: PascalABC.NET позволяет использовать в именах не только латинские буквы и цифры, но также буквы других алфавитов - кириллицу, греческие и т.д.

0

Вы согласны, что программа из-за этих процедур получилась длиннее и даже менее понятной? )))

0

Это потому, что тело каждой процедуры содержит одну строку и проще написать ее в основной программе, чем городить заголовок процедуры, параметры, вызов этой процедуры...

0

Видимо, смысл задания был в том, чтобы показать, как процедуры упрощают программу, а получился противоположный эффект.