Переставить местами цифры 4-хзначного числа так, чтобы сначала оказались цифры, меньшие пяти - PascalABC.NET

Узнай цену своей работы

Формулировка задачи:

помогите написать условие, переставляющее цифры местами в соответствии с заданием. я запутался вообще, скину код который написал. 32. Дано четырехзначное число. Переставьте местами цифры так, чтобы сначала оказались цифры, меньшие пяти.
Листинг программы
  1. Program zadacha_32;
  2. var a,b,c,d,e:integer;
  3. begin
  4. writeln('Введите четырехзначное число');
  5. readln(a);
  6. if (a>999) and (a<10000) then
  7. begin
  8. b:= a div 1000;
  9. c:= a div 100 mod 10;
  10. d:= a div 10 mod 10;
  11. e:= a mod 10;
  12. //writeln(b,' ',c,' ',d,' ',e);
  13. end
  14. else writeln('Число не четырехзначное!');
  15. end.

Решение задачи: «Переставить местами цифры 4-хзначного числа так, чтобы сначала оказались цифры, меньшие пяти»

textual
Листинг программы
  1. begin
  2.   var N := Abs(ReadLnInteger('N ='));
  3.   var D := 10; var predD := 1;
  4.   var P := 0 ; var powP  := 1;
  5.   while D < N do
  6.     if N mod D div predD < 5 then
  7.       begin
  8.         P += N mod D div predD * powP; powP *= 10;
  9.         N := N div D * predD + N mod predD;
  10.       end
  11.     else
  12.       begin
  13.         predD := D;
  14.         D *= 10;
  15.       end;
  16.  
  17.   N := P * D + N;
  18.   WriteLn(N);
  19. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы