Паскаль! Помогите пожалуйста! Дана матрица. Вставить в нее столбец из нулевых элементов после последнего столбца, в котором количество четных элементов меньше 5. Если таких столбцов нет - выдать соответствующее сообщение.
Ответы
Ответ дал:
0
// PascalABC.NET 3.3, сборка 1549 от 17.10.2017
// Внимание! Если программа не работает, обновите версию!
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 (i,k):=(0,-1);
foreach var c in a.Cols do
if c.Where(e->e.IsEven).Count<5 then k:=i
else i+=1;
if k>=0 then begin
Writeln('*** Матрица - результат [',n,',',m+1,'] ***');
SetLength(a,n,m+1);
for var c:=a.ColCount-1 downto k+1 do
a.SetCol(c,a.Col(c-1));
a.SetCol(k+1,ArrFill(a.RowCount,0));
a.Println(4)
end
else Writeln('Нет столбцов с количеством четных элементов, меньшим 5')
end.
Пример
Количество строк в матрице: 8
Количество столбцов в матрице: 6
*** Исходная матрица [8,6] ***
38 -44 50 20 -85 -92
15 -43 43 6 -80 63
76 2 -63 32 14 -37
-78 -30 94 -45 44 -25
-74 30 15 -56 -41 -88
72 -15 -74 38 -47 -76
11 -75 -2 70 35 65
-52 -42 9 94 59 -28
------------------------
*** Матрица - результат [8,7] ***
38 -44 50 20 0 -85 -92
15 -43 43 6 0 -80 63
76 2 -63 32 0 14 -37
-78 -30 94 -45 0 44 -25
-74 30 15 -56 0 -41 -88
72 -15 -74 38 0 -47 -76
11 -75 -2 70 0 35 65
-52 -42 9 94 0 59 -28
// Внимание! Если программа не работает, обновите версию!
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 (i,k):=(0,-1);
foreach var c in a.Cols do
if c.Where(e->e.IsEven).Count<5 then k:=i
else i+=1;
if k>=0 then begin
Writeln('*** Матрица - результат [',n,',',m+1,'] ***');
SetLength(a,n,m+1);
for var c:=a.ColCount-1 downto k+1 do
a.SetCol(c,a.Col(c-1));
a.SetCol(k+1,ArrFill(a.RowCount,0));
a.Println(4)
end
else Writeln('Нет столбцов с количеством четных элементов, меньшим 5')
end.
Пример
Количество строк в матрице: 8
Количество столбцов в матрице: 6
*** Исходная матрица [8,6] ***
38 -44 50 20 -85 -92
15 -43 43 6 -80 63
76 2 -63 32 14 -37
-78 -30 94 -45 44 -25
-74 30 15 -56 -41 -88
72 -15 -74 38 -47 -76
11 -75 -2 70 35 65
-52 -42 9 94 59 -28
------------------------
*** Матрица - результат [8,7] ***
38 -44 50 20 0 -85 -92
15 -43 43 6 0 -80 63
76 2 -63 32 0 14 -37
-78 -30 94 -45 0 44 -25
-74 30 15 -56 0 -41 -88
72 -15 -74 38 0 -47 -76
11 -75 -2 70 0 35 65
-52 -42 9 94 0 59 -28
Вас заинтересует
5 месяцев назад
5 месяцев назад
1 год назад
2 года назад
7 лет назад