На эту запись поступили жалобы от сообщества, поэтому она временно скрыта.
Чтобы было нормальное форматирование кода, начинайте его и завершайте строкой, содержащей три символа ` подряд (клавиша, где тильда и ё). А такой текст, как Вы привели, читать вряд ли кто-то станет…
function comp(a, b: Integer; d:integer := 1) :=
a div d mod 10
>
b div d mod 10;
procedure sortradix(a: array of Integer);
begin
//SetLength(a, n);
var d := 1;
a.Select(x -> Format('{0,5}', x)).Println;
repeat
var theEndSwap := a.Length - 1;
repeat
var predEndSwap := theEndSwap;
theEndSwap := 0;
for var i := 0 to predEndSwap - 1 do
if comp(a[i], a[i+1], d) then
begin
swap(a[i], a[i + 1]);theEndSwap := i;
end;
until theEndSwap = 0;
a.Select(x -> Format('{0,5}', x)).Println;
d *= 10;
until d > a.Max;
end;
Кстати var-параметры
вы используете зря тут, их имеет смысл использовать только когда передаёте большой объём кода, к примеру объёмной записью.
И if a>b then result := true else result := false
это 1 из тех вещей про которые обычно шутят result := a > b
лучше.
Большое спасибо!
А зачем скрывать то, пусть останется, кому то будет интересно почитать…