Переставить местами цифры 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.

Объяснение кода листинга программы

В этом коде выполняется перестановка цифр в четырёхзначном числе, чтобы сначала шли цифры, меньшие пяти. Цифры переносятся в обратном порядке, начиная с наиболее значимой (сначала идёт десятка, затем единица).

  1. N := Abs(ReadLnInteger('N =')); — считываем четырёхзначное число, сохранённое в переменной N
  2. D := 10; — инициализируем счётчик/делитель (переменная D), равным 10
  3. predD := 1; — инициализируем предельное значение для D (переменная predD), равным 1
  4. P := 0; — инициализируем сумму (переменная P), равным 0
  5. powP := 1; — инициализируем показатель степени (переменная powP), равным 1
  6. while D < N do — выполняем перестановку до тех пор, пока счётчик/делитель (D) меньше числа (N)
  7. if N mod D div predD < 5 then — если остаток от деления числа (N) на счётчик/делитель (D) с учётом остатка от деления на предыдущее значение счётчика (predD) меньше 5
  8. begin — начинаем цикл, если условие истинно
  9. P += N mod D div predD * powP; — добавляем к сумме (P) произведение остатка от деления числа (N) на счётчик/делитель (D) с учётом остатка от деления на предыдущее значение счётчика (predD) и показатель степени (powP)
  10. powP *= 10; — умножаем показатель степени (powP) на 10
  11. N := N div D * predD + N mod predD; — переносим цифры числа (N) в обратном порядке, сначала десятки, затем единицы
  12. end — заканчиваем цикл, если условие ложно
  13. else — иначе
  14. begin — начинаем цикл, если условие истинно
  15. predD := D; — сохраняем текущее значение счётчика (D) в переменной предыдущего значения счётчика (predD)
  16. D *= 10; — умножаем счётчик/делитель (D) на 10
  17. end; — заканчиваем цикл, если условие ложно
  18. N := P * D + N; — переносим сумму (P) и число (N) в обратном порядке, сначала десятки, затем единицы
  19. WriteLn(N); — выводим результат на консоль
  20. end. — завершаем программу

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5
Похожие ответы