• Найти с помощью лямбда функцию сумму элемента матрицы .

    question img

Ответы 6

  • Т.е. лямбды и оператор цикла соотносятся примерно так, как язык программирования высокого уровня и ассемблер.
    • Автор:

      riggs8
    • 4 года назад
    • 0
  • Или, совсем коротко, использование циклов с лямбдами - это архаизм.
    • Автор:

      elliott40
    • 4 года назад
    • 0
  • Есть и расплата за это: в целом программа с циклами, перемешанными с лямбдами, как ни странно, но будет не только выглядеть длиннее, но работать медленнее, чем без циклов.
  • И еще: должны же мы "вставить Питону", и написать программу короче, чем на нем! Кстати, там операторов цикла формально нет )))
  • В смысле, операторов цикла со счетчиком, там их через диапазоны моделируют.
  • // PascalABC.NET 3.2, сборка 1449 от 23.05.2017// Внимание! Если программа не работает, обновите версию!begin  var n:=ReadInteger('Количество строк/столбцов в матрице:');  Writeln('*** Исходная матрица [',n,',',n,'] ***');  var a:=MatrRandom(n,n,-99,99);   a.Println(4); Writeln(4*a.ColCount*'-');  Writeln('S=',a.ElementsWithIndexes    .Where(y->(y[0]>=a.RowCount div 2) and (y[1]>=a.ColCount div 2))    .Select(y->y[2]).Sum)end.ПримерКоличество строк/столбцов в матрице: 8*** Исходная матрица [8,8] *** -73 -79  -1  19 -58  79 -18 -81 -71  78  27  59  -6   4 -95  36 -95 -47 -94 -86  66 -37   6  12 -96 -42 -43 -78  34 -53  29  91 -65   2  59   3 -26 -16 -63  22  -4 -18  97  65 -70  78  78   9 -36 -64   8 -69 -34  74 -17  63  15  87  15  84  22 -39 -16  82--------------------------------S=147Если не устраивают лямбда-выражения, а нужна именно функция, можно написать так:type  Mat=array[,] of integer;  begin  var n:=ReadInteger('Количество строк/столбцов в матрице:');  Writeln('*** Исходная матрица [',n,',',n,'] ***');  var a:Mat:=MatrRandom(n,n,-99,99);   a.Println(4); Writeln(4*a.ColCount*'-');  var PartSum:Mat->integer;  PartSum:=x->x.ElementsWithIndexes    .Where(y->(y[0]>=x.RowCount div 2) and (y[1]>=x.ColCount div 2))    .Select(y->y[2]).Sum;  Writeln('S=',PartSum(a))end.
  • Добавить свой ответ

Еще вопросы

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years