Замена цифры в числе - Pascal ABC
Формулировка задачи:
Дано целое число (5<число<2*109), его делят нацело на 2. Полученное частное опять нацело делят на 2, но если в записи частного попадается цифра 6 (одна или несколько), её заменяют цифрой 5. Частное продолжают делить нацело на 2 (при необходимости делая замены цифр) до тех пор, пока число не станет меньше 5.
Найти количество замен цифр.
Решение задачи: «Замена цифры в числе»
textual
Листинг программы
var a:longint;k:integer; function zam(x:longint;var kz:integer):longint; begin if x>0 then if x mod 10 = 6 then begin inc(kz); zam:=10*zam(x div 10,kz)+5 end else zam:=10*zam(x div 10,kz)+(x mod 10) else zam:=0 end; begin write('a = ');readln(a);k:=0; while a>=5 do a:=zam(a div 2,k); writeln('количество замен: ',k) end.
Объяснение кода листинга программы
- Создаются две переменные типа longint: a и k.
- Создается функция zam, которая принимает в качестве аргументов x (тип longint) и kz (тип integer).
- Внутри функции проверяется, что x больше нуля.
- Если x больше нуля, то выполняется проверка, что x mod 10 равно 6. Если это условие выполняется, то значение kz увеличивается на единицу и функция вызывается рекурсивно с аргументами x div 10 и kz. В результате выполняется замена цифры в числе.
- Если условие из пункта 4 не выполняется, то значение kz остается неизменным, а результат функции zam присваивается переменной a.
- В основной части программы считывается значение переменной a и устанавливается начальное значение k равным 0.
- Запускается цикл while, который выполняется до тех пор, пока a больше или равно 5.
- Внутри цикла значение a присваивается результату вызова функции zam, деленному на 2, и значению k увеличивается на единицу.
- По завершении цикла выводится количество замен, которое равно значению k.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д