Pascalabc.net дана двумерная матрица a(n,m). удалить все столбцы,в которых первый элемент больше последнего ( сесия! )

hsjsjxn hsjsjxn    1   16.08.2019 21:50    0

Ответы
nikita2429p09umg nikita2429p09umg  20.08.2020 09:58
// PascalABC.NET 3.2, сборка 1363 от 17.12.2016
// Внимание! Если программа не работает, обновите версию!

begin
  var m:=ReadInteger('Количество строк в матрице:');
  var n:=ReadInteger('Количество столбцов в матрице:');
  Writeln('*** Исходная матрица [',m,'x',n,'] ***');
  var a:=MatrRandom(m,n,-50,50);
  a.Println(4); Writeln(4*a.ColCount*'-');
  var q:=a.Cols.Select(x->x.First<x.Last).ToArray;
  var k:=q.Where(r->r).Count;
  Writeln('*** Результирующая матрица [',m,'x',k,'] ***');
  var b:=MatrFill(m,k,0);
  var l:=0;
  for var j:=0 to n-1 do
    if q[j] then begin
      for var i:=0 to m-1 do b[i,l]:=a[i,j];
      l+=1
      end;
  b.Println(4)
end.

Пример
Количество строк в матрице: 5
Количество столбцов в матрице: 8
*** Исходная матрица [5x8] ***
  15 -35 -11 -18  49 -32  31 -47
 -21 -46   7 -48   3  24 -48   5
  28 -46  36  -9  17 -32 -44 -10
 -16   7 -14  40  13  30  50 -28
  -8  35 -49  47 -31  30  18  20

*** Результирующая матрица [5x4] ***
 -35 -18 -32 -47
 -46 -48  24   5
 -46  -9 -32 -10
   7  40  30 -28
  35  47  30  20
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика