profile
Опубликовано 6 лет назад по предмету Информатика от Olivka0

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

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