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.
Замечание. В связи с некорректно поставленным вопросом принято решение сортировать каждую строку массива независимо от прочих по возрастанию последней цифры.
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.
Внимание! Если программа не работает, обновите версию!
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
Замечание. В связи с некорректно поставленным вопросом принято решение сортировать каждую строку массива независимо от прочих по возрастанию последней цифры.
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.