Другие языки программирования и технологии
паскаль. подскажите алгоритм
задание такое, есть число(например 51265649) нужно составить наименьшее число из цифр этого числа. как бы нужно ставить наименьшие в начало тоесть 12455669, но как программно сделать? нельзя использовать строки и массивы. как перенести цифры?
отсортировать разряды прямо в числе
для этого удобно иметь пару функций:
1. узнать кол-во разрядов в числе (делить на 10 пока не получится 0 и считать кол-во делений)
2. узнать цифру на К-той позиции числа
3. поменять местами 2 разряда
затем эти функции использовать в алгоритме сортировки, например пузырьком.
для этого удобно иметь пару функций:
1. узнать кол-во разрядов в числе (делить на 10 пока не получится 0 и считать кол-во делений)
2. узнать цифру на К-той позиции числа
3. поменять местами 2 разряда
затем эти функции использовать в алгоритме сортировки, например пузырьком.
Эту задачу проще всего решать со строками!
(Ограничение на длину числа - 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);
(Ограничение на длину числа - 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);
найди мин цифру. Из базового числа исключи, в результат включи
могу сделать пиши в агент или аську 452371863
могу сделать пиши в агент или аську 452371863
Похожие вопросы
- Программисты, подскажите алгоритм, пожалуйста, очень нужно(Паскаль)!
- Паскаль.напишите алгоритм
- Паскаль. подскажите кто может
- Умные люди есть тут?;)) ) Помогите, пожалуйста, с домашней работой по информатике. Нужно в Паскале составить алгоритм реш
- По дате вычислить порядковый номер дня в нашей эре.На паскале. Подскажите как это сделать ;/
- Строковые переменные (Паскаль).Подскажите пожалуйста
- подскажите алгоритм на .bat
- Подскажите алгоритм
- подскажите алгоритм решения задачи: Действительное число а. Использовать только умножение. Получить а^64 за 6 операций.
- Подскажите алгоритм, как определить сколько различных символов входят в текст?