Другие языки программирования и технологии

паскаль. подскажите алгоритм

задание такое, есть число(например 51265649) нужно составить наименьшее число из цифр этого числа. как бы нужно ставить наименьшие в начало тоесть 12455669, но как программно сделать? нельзя использовать строки и массивы. как перенести цифры?
DS
Den Shkoda
96
отсортировать разряды прямо в числе
для этого удобно иметь пару функций:
1. узнать кол-во разрядов в числе (делить на 10 пока не получится 0 и считать кол-во делений)
2. узнать цифру на К-той позиции числа
3. поменять местами 2 разряда

затем эти функции использовать в алгоритме сортировки, например пузырьком.
Руслан Шеримбетов
Руслан Шеримбетов
3 282
Лучший ответ
Эту задачу проще всего решать со строками!
(Ограничение на длину числа - 255 цифр, а не до 10 цифр типа Longint)

Плюс - манипулировать символами гораздо проще…


Write('Введите натуральное число: '); ReadLn(S);
{ Проверка на правильность ввода }
for N := 1 to Length(S) do if Not(S[N] in ['0'..'9']) then begin WriteLn('Натуральное число не может содержать символов отличных от цифр! '); Halt; end;
{ Не забудем убрать ведущие нули }
while S[1] = '0' do Delete(S, 1, 1);
if Length(S) = 0 then begin WriteLn('Результат : 0'); Halt; end; { Введено значение "0" }
{ Сформируем новую строку из символов в порядке возрастания }
R := ''; for Ch := '0' to '9' do for N := 1 to Length(S) do if S[N] = Ch then R := R + Ch;
{ В полученной строке вида 000NXXXX нужно первую цифру после ведущих нолей поставить на первое место }
if R[1] = '0' then begin N := 2; while R[N] = '0' do Inc(N); R[1] := R[N]; R[N] := '0'; end;
{ Ну вот и всё! }
WriteLn('Результат: ', R);
Шин Данил
Шин Данил
89 327
найди мин цифру. Из базового числа исключи, в результат включи

могу сделать пиши в агент или аську 452371863