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

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

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


Информатика (1.4k баллов) | 200 просмотров
0

Нельзя массив отсортировать "по строкам". Можно или по одной конкретной строке, или отсортировать отдельно каждую строку массива.

Дано ответов: 2
0 голосов
Правильный ответ
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

Замечание. В связи с некорректно поставленным вопросом принято решение сортировать каждую строку массива независимо от прочих по возрастанию последней цифры.
(150k баллов)
0 голосов

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.

(3.9k баллов)
0

А в чем смысл Вашего решения. Вот пример запуска Вашей программы, я не смог найти в результате признака сортировки

0

1 0 12 9 1
29 1 11 28 4
1 15 0 4 27
2 15 28 16 5
19 25 10 2 19

1 0 12 9 1
29 1 11 28 4
2 15 28 16 5
19 25 10 2 19
1 15 0 4 27

0

Разве что Вы строки переставили по возрастанию последней цифры в ПОСЛЕДНЕЙ колонке. Почему по последней?

0

А вот еще один запуск. Тут вообще неясен критерий сортировки

0

21 21 25 12 19
18 8 28 12 8
15 6 9 16 22
21 17 6 27 25
3 24 17 18 22

18 8 28 12 8
21 21 25 12 19
15 6 9 16 22
3 24 17 18 22
21 17 6 27 25