Составте 4 процедуры для обработки двумерного массива( pascaleabs.net) 1) определить сумму и количество четных элементов двумерного массива. 2) находить "кордитнаты" максимального элемента. 3) заменить все четные значения на 0...

Составте 4 процедуры для обработки двумерного массива( pascaleabs.net) 1) определить сумму и количество четных элементов двумерного массива. 2) находить "кордитнаты" максимального элемента. 3) заменить все четные значения на 0 4) определить номер строки в которой сумма элементов максимальна Заранее спасибо!
Гость
Ответ(ы) на вопрос:
Гость
// 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.Count end; 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]:=0 end; 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
Не нашли ответ?
Ответить на вопрос
Похожие вопросы