// PascalABC.NET 3.2, сборка 1401 от 14.03.2017// Внимание! Если программа не работает, обновите версию!procedure SumKolEven(a:array[,] of integer; var s,k:integer);begin var p:=a.Rows.SelectMany(x->x).Where(x->x.IsEven); s:=p.Sum; k:=p.Countend;procedure MaxCoord(a:array[,] of integer; var imax,jmax:integer);begin (imax,jmax):=(0,0); for var i:=0 to a.RowCount-1 do for var j:=0 to a.ColCount-1 do if a[i,j]>a[imax,jmax] then (imax,jmax):=(i,j)end;procedure ZeroEven(a:array[,] of integer);begin for var i:=0 to a.RowCount-1 do for var j:=0 to a.ColCount-1 do if a[i,j].IsEven then a[i,j]:=0end;procedure MaxSumRow(a:array[,] of integer; var irow:integer);begin irow:=a.Rows.Select(x->x.Sum).ToArray.IndexMax;end;begin var n:=ReadInteger('Количество строк в массиве:'); var m:=ReadInteger('Количество столбцов в массиве:'); Writeln('*** Исходный массив [',n,',',m,'] ***'); var a:=MatrRandom(n,m,-99,99); a.Println(4); Writeln(4*a.ColCount*'-'); var sum,kol:integer; SumKolEven(a,sum,kol); Writeln('S=',sum,', k=',kol); var im,jm:integer; MaxCoord(a,im,jm); Writeln('Координаты максимума [',im+1,',',jm+1,']'); var b:=Copy(a); ZeroEven(b); b.Println(4); Writeln(4*b.ColCount*'-'); MaxSumRow(a,im); Writeln('Максимальная сумма у строки ',im+1)end.
ПримерКоличество строк в массиве: 5Количество столбцов в массиве: 8*** Исходный массив [5,8] *** 23 94 26 40 -88 -29 88 -46 -98 64 -78 93 17 36 66 56 -52 -16 -7 -33 -63 -95 40 96 10 -30 79 -75 -47 83 30 -70 -37 -50 -80 18 -7 -43 68 -68--------------------------------S=56, k=25Координаты максимума [3,8] 23 0 0 0 0 -29 0 0 0 0 0 93 17 0 0 0 0 0 -7 -33 -63 -95 0 0 0 0 79 -75 -47 83 0 0 -37 0 0 0 -7 -43 0 0--------------------------------Максимальная сумма у строки 2