Отсортировать массив по возрастанию последней цифры по строкам. паскаль

Subota Subota    2   25.09.2019 03:40    2

Ответы
NatashaShvecova NatashaShvecova  08.10.2020 17:20
PascalABC.NET 3.3.5, сборка 1662 от 29.04.2018
Внимание! Если программа не работает, обновите версию!

begin
  var (m,n):=ReadInteger2('Количество строк и столбцов в массиве:');
  Writeln('*** Исходный массив ***');
  var a:=MatrRandom(m,n,-99,99);
  a.Println(4); Writeln(4*n*'-');
  for var i:=0 to m-1 do
    a.SetRow(i,a.Row(i).OrderBy(t->Abs(t mod 10)).ToArray);
  Writeln('*** Полученный массив ***'); a.Println(4)
end.

Пример
Количество строк и столбцов в массиве: 5 8
*** Исходный массив ***
 -53 -41 -74  23  90  -4  48 -78
 -68  82  45  82 -54 -53 -63  80
  66  40 -72 -15  79 -95  16  98
 -52 -76  37  10  -9 -87 -12  30
 -82 -58  43 -17  58  27 -85  96

*** Полученный массив ***
  90 -41 -53  23 -74  -4  48 -78
  80  82  82 -53 -63 -54  45 -68
  40 -72 -15 -95  66  16  98  79
  10  30 -52 -12 -76  37 -87  -9
 -82  43 -85  96 -17  27 -58  58

Замечание. В связи с некорректно поставленным вопросом принято решение сортировать каждую строку массива независимо от прочих по возрастанию последней цифры.
ПОКАЗАТЬ ОТВЕТЫ
Abdul18 Abdul18  08.10.2020 17:20
Const n=5;
var a:array[1..n,1..n] of integer;
i,j,v,l:integer;
begin
for i:=1 to n do
begin
for j:=1 to n do
begin
a[i,j]:=random(30);
write(a[i,j]:4)
end;
writeln
end;
writeln;
for l:=n-1 downto 1 do
for i:=1 to l do
if a[i,n] > a[i+1,n] then
for j:=1 to n do
begin
v:=a[i,j];
a[i,j]:=a[i+1,j];
a[i+1,j]:=v
end;
for i:=1 to n do
begin
for j:=1 to n do write(a[i,j]:4);
writeln
end;
readln
end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика