Замена цифры в числе - Pascal ABC

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

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

Дано целое число (5<число<2*109), его делят нацело на 2. Полученное частное опять нацело делят на 2, но если в записи частного попадается цифра 6 (одна или несколько), её заменяют цифрой 5. Частное продолжают делить нацело на 2 (при необходимости делая замены цифр) до тех пор, пока число не станет меньше 5. Найти количество замен цифр.

Решение задачи: «Замена цифры в числе»

textual
Листинг программы
  1. var a:longint;k:integer;
  2. function zam(x:longint;var kz:integer):longint;
  3. begin
  4.   if x>0 then
  5.           if x mod 10 = 6 then begin inc(kz); zam:=10*zam(x div 10,kz)+5 end
  6.                           else zam:=10*zam(x div 10,kz)+(x mod 10)
  7.          else zam:=0                
  8. end;
  9. begin
  10.  write('a = ');readln(a);k:=0;
  11.  while a>=5 do a:=zam(a div 2,k);
  12.  writeln('количество замен: ',k)
  13. end.

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

  1. Создаются две переменные типа longint: a и k.
  2. Создается функция zam, которая принимает в качестве аргументов x (тип longint) и kz (тип integer).
  3. Внутри функции проверяется, что x больше нуля.
  4. Если x больше нуля, то выполняется проверка, что x mod 10 равно 6. Если это условие выполняется, то значение kz увеличивается на единицу и функция вызывается рекурсивно с аргументами x div 10 и kz. В результате выполняется замена цифры в числе.
  5. Если условие из пункта 4 не выполняется, то значение kz остается неизменным, а результат функции zam присваивается переменной a.
  6. В основной части программы считывается значение переменной a и устанавливается начальное значение k равным 0.
  7. Запускается цикл while, который выполняется до тех пор, пока a больше или равно 5.
  8. Внутри цикла значение a присваивается результату вызова функции zam, деленному на 2, и значению k увеличивается на единицу.
  9. По завершении цикла выводится количество замен, которое равно значению k.

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


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

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

5   голосов , оценка 3.2 из 5

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

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

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