Паскаль! Помогите пожалуйста! Дана матрица. Вставить в нее столбец из нулевых элементов после последнего столбца, в котором количество четных элементов меньше 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
Вас заинтересует