Переставить местами цифры 4-хзначного числа так, чтобы сначала оказались цифры, меньшие пяти - PascalABC.NET
Формулировка задачи:
помогите написать условие, переставляющее цифры местами в соответствии с заданием. я запутался вообще, скину код который написал.
32. Дано четырехзначное число. Переставьте местами цифры так, чтобы сначала оказались цифры, меньшие пяти.
Решение задачи: «Переставить местами цифры 4-хзначного числа так, чтобы сначала оказались цифры, меньшие пяти»
textual
Листинг программы
begin var N := Abs(ReadLnInteger('N =')); var D := 10; var predD := 1; var P := 0 ; var powP := 1; while D < N do if N mod D div predD < 5 then begin P += N mod D div predD * powP; powP *= 10; N := N div D * predD + N mod predD; end else begin predD := D; D *= 10; end; N := P * D + N; WriteLn(N); end.
Объяснение кода листинга программы
В этом коде выполняется перестановка цифр в четырёхзначном числе, чтобы сначала шли цифры, меньшие пяти. Цифры переносятся в обратном порядке, начиная с наиболее значимой (сначала идёт десятка, затем единица).
- N := Abs(ReadLnInteger('N =')); — считываем четырёхзначное число, сохранённое в переменной N
- D := 10; — инициализируем счётчик/делитель (переменная D), равным 10
- predD := 1; — инициализируем предельное значение для D (переменная predD), равным 1
- P := 0; — инициализируем сумму (переменная P), равным 0
- powP := 1; — инициализируем показатель степени (переменная powP), равным 1
- while D < N do — выполняем перестановку до тех пор, пока счётчик/делитель (D) меньше числа (N)
- if N mod D div predD < 5 then — если остаток от деления числа (N) на счётчик/делитель (D) с учётом остатка от деления на предыдущее значение счётчика (predD) меньше 5
- begin — начинаем цикл, если условие истинно
- P += N mod D div predD * powP; — добавляем к сумме (P) произведение остатка от деления числа (N) на счётчик/делитель (D) с учётом остатка от деления на предыдущее значение счётчика (predD) и показатель степени (powP)
- powP *= 10; — умножаем показатель степени (powP) на 10
- N := N div D * predD + N mod predD; — переносим цифры числа (N) в обратном порядке, сначала десятки, затем единицы
- end — заканчиваем цикл, если условие ложно
- else — иначе
- begin — начинаем цикл, если условие истинно
- predD := D; — сохраняем текущее значение счётчика (D) в переменной предыдущего значения счётчика (predD)
- D *= 10; — умножаем счётчик/делитель (D) на 10
- end; — заканчиваем цикл, если условие ложно
- N := P * D + N; — переносим сумму (P) и число (N) в обратном порядке, сначала десятки, затем единицы
- WriteLn(N); — выводим результат на консоль
- end. — завершаем программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д