Создать две процедуры в паскаль • Сортировка в возрастающем порядке элементов первого...

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

Создать две процедуры в паскаль
• Сортировка в возрастающем порядке элементов первого столбца матрицы;
• Сортировка в убывающем порядке элементов последнего столбца матрицы;


Информатика (613 баллов) | 96 просмотров
0

Только сортировка тех столбцов что я указал

0

Строки не трогать

Дан 1 ответ
0 голосов
Правильный ответ
// PascalABC.NET 3.2, сборка 1431 от 28.04.2017
// Внимание! Если программа не работает, обновите версию!

procedure SortFirstColAsc(p:array[,] of integer);
begin
  var c:=p.Col(0).OrderBy(x->x).ToArray;
  for var i:=0 to p.RowCount-1 do p[i,0]:=c[i]
end;

procedure SortLastColDesc(p:array[,] of integer);
begin
  var j:=p.ColCount-1;
  var c:=p.Col(j).OrderByDescending(x->x).ToArray;
  for var i:=0 to p.RowCount-1 do p[i,j]:=c[i]
end;


begin
  var n:=ReadInteger('Количество строк в матрице:');
  var m:=ReadInteger('Количество столбцов в матрице:');
  Writeln('*** Исходная матрица [',n,',',m,'] ***');
  var a:=MatrRandom(n,m,-99,99);
  a.Println(4); Writeln(4*a.ColCount*'-');
  Writeln('Сортировка по первой колонке');
  SortFirstColAsc(a);
  a.Println(4); Writeln(4*a.ColCount*'-');
   Writeln('Сортировка по последней колонке');
   SortLastColDesc(a);
  a.Println(4)
end.

Пример
Количество строк в матрице: 4
Количество столбцов в матрице: 7
*** Исходная матрица [4,7] ***
 -12  60  18 -46  10   4  26
  32 -73  -2 -88 -70 -46 -17
 -18  94 -41   9 -11  32  94
  32 -18   1 -71 -96 -77  46
----------------------------
Сортировка по первой колонке
 -18  60  18 -46  10   4  26
 -12 -73  -2 -88 -70 -46 -17
  32  94 -41   9 -11  32  94
  32 -18   1 -71 -96 -77  46
----------------------------
Сортировка по последней колонке
 -18  60  18 -46  10   4  94
 -12 -73  -2 -88 -70 -46  46
  32  94 -41   9 -11  32  26
  32 -18   1 -71 -96 -77 -17
(150k баллов)
0

опять все сортирует

0

а не

0

Все нормас

0

Только теперь еще последний по убыванию

0

Что поменять?

0

ИДЕАЛЬНО! СПАСИБО ОГРОМНОЕ!!