Составте 4 процедуры для обработки двумерного массива( pascaleabs.net)1) найти сумму и
Составте 4 процедуры для обработки двумерного массива( pascaleabs.net)
1) найти сумму и количество четных частей двумерного массива.
2) обретать "кордитнаты" наибольшего элемента.
3) поменять все четные значения на 0
4) определить номер строки в которой сумма частей максимальна
Заранее спасибо!
1 ответ
Милена Айвазова
// 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-gt;x).Where(x-gt;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]gt;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-gt;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
// Внимание! Если программка не работает, обновите версию!
procedure SumKolEven(a:array[,] of integer; var s,k:integer);
begin
var p:=a.Rows.SelectMany(x-gt;x).Where(x-gt;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]gt;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-gt;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
Nina Cherpu
Спасибо!
, оставишь ответ?
Похожие вопросы
-
Вопросы ответы
Новое
NEW
Статьи
Информатика
Статьи
Последние вопросы
В сосуде 4целых одна пятая литр воды что бы заполнить сосуд
Математика.
Двум малярам Диме И Олегу поручили выкрасить фасад дома они разделили
Разные вопросы.
найти порядковый номер 41Э если в ядре 20 нейтронов
Разные вопросы.
в ряду натуральных чисел 3, 8, 10, 24, … 18 одно
Математика.
Предприятие по производству с/хоз продукции на производство затратило 3527000 руб Валовый
Разные вопросы.
Математика, задано на каникулы. ВАРИАНТ 1004
НОМЕР 1,2,3,4,5,6,7,8.
Математика.
Имеются три конденсатора емкостью С1=1мкФ, С2=2мкФ и С3=3мкФ. Какую наименьшую емкость
Физика.
Из точки м выходят 3 луча MP MN и MK причём
Геометрия.
выпиши в свою тетрадь те правила этикета которые тебе не были
Разные вопросы.
Анна хорошо учится у неё много подруг свободное от учёбы время
Обществознание.
Облако тегов