Переставить местами цифры 4-хзначного числа так, чтобы сначала оказались цифры, меньшие пяти - PascalABC.NET
Формулировка задачи:
помогите написать условие, переставляющее цифры местами в соответствии с заданием. я запутался вообще, скину код который написал.
32. Дано четырехзначное число. Переставьте местами цифры так, чтобы сначала оказались цифры, меньшие пяти.
Листинг программы
- Program zadacha_32;
- var a,b,c,d,e:integer;
- begin
- writeln('Введите четырехзначное число');
- readln(a);
- if (a>999) and (a<10000) then
- begin
- b:= a div 1000;
- c:= a div 100 mod 10;
- d:= a div 10 mod 10;
- e:= a mod 10;
- //writeln(b,' ',c,' ',d,' ',e);
- end
- else writeln('Число не четырехзначное!');
- end.
Решение задачи: «Переставить местами цифры 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. — завершаем программу
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д