PascalABC.NET Дана двумерная матрица A(N,m). Удалить все столбцы,в которых первый элемент...

0 голосов
53 просмотров

PascalABC.NET Дана двумерная матрица A(N,m). Удалить все столбцы,в которых первый элемент больше последнего
(Срочно Сесия!)


Информатика (15 баллов) | 53 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// 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  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

(150k баллов)