Перетворити стовпці матриці А(nxn) так: якщо кількість елементів у стовпці , які...

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

Перетворити стовпці матриці А(nxn) так: якщо кількість елементів у стовпці , які перевищують мінімальне додатне значення цього стовця ,більша за 3 , то всі додатні елементи відповідного стовця розділити на 2


Информатика (20 баллов) | 62 просмотров
Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1485 от 15.06.2017
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('Количество строк/столбцов в матрице:');
  Writeln('*** Исходная матрица [',n,',',n,'] ***');
  var a:=MatrRandom(n,n,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  var j:=0;
  var nr:=ArrFill(n,False);
  foreach var c in a.Cols do begin
    var s:=c.Where(x->x>0);
    if s.Count>0 then begin
      var min:=s.Min;
      var k:=c.Where(x->x>min).Count;
      nr[j]:=k>3; j+=1
      end
    end;
  Writeln('*** Результирующая матрица ***');
  for var i:=0 to n-1 do
    if nr[i] then a.SetCol(i,a.Col(i).Select(x->(x>0?x div 2:x)).ToArray);
  a.Println(4)
end.

Пример
Количество строк/столбцов в матрице: 10
*** Исходная матрица [10,10] ***
 -12  16  82  17  61 -19 -54  30 -27  77
  72 -88  64 -50  85  16   3 -90  72  69
 -26  22  27 -72 -83  23 -39 -56  -6  87
   2 -56  -4 -43 -15 -31  75  85 -96  -7
  42 -17  67  55  32  74  28 -92 -81 -97
 -44  80 -50  81  -8  66  89  55   0 -61
 -79 -97 -64 -15 -25  28  15   7  64  17
  41  17 -93 -20 -72  91  54  71  -5 -57
  95 -47 -74  -8  32  22  94  15  64  19
 -20 -79 -15  65 -28  39 -52 -18 -20 -96
----------------------------------------
*** Результирующая матрица ***
 -12  16  82  17  61 -19 -54  15 -27  38
  36 -88  64 -50  85   8   1 -90  72  34
 -26  22  27 -72 -83  11 -39 -56  -6  43
   1 -56  -4 -43 -15 -31  37  42 -96  -7
  21 -17  67  55  32  37  14 -92 -81 -97
 -44  80 -50  81  -8  33  44  27   0 -61
 -79 -97 -64 -15 -25  14   7   3  64   8
  20  17 -93 -20 -72  45  27  35  -5 -57
  47 -47 -74  -8  32  11  47   7  64   9
 -20 -79 -15  65 -28  19 -52 -18 -20 -96
(150k баллов)