Вычислить сумму тех чисел из заданного отрезка, в запись которых входит цифра k - Pascal

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

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

Решить задачу с использованием процедур. Указать выделенные подзадачи, решаемые процедурами. Вычислить сумму тех чисел из заданного отрезка [a, b] (a, b — натуральные), в запись которых входит цифра k.

Решение задачи: «Вычислить сумму тех чисел из заданного отрезка, в запись которых входит цифра k»

textual
Листинг программы
  1. function HaveK(numb: Word; k: Byte): Word;
  2. var
  3.     flag: Boolean;
  4.     Result: Word;
  5. begin
  6.     Result := numb;
  7.     repeat
  8.         flag := ((numb mod 10) = k);
  9.         numb := numb div 10;
  10.     until ((numb = 0) Or (flag));
  11.     if (Not flag)
  12.     then
  13.         Result := 0;
  14.     HaveK := Result;
  15. end;
  16.  
  17. function Rec(const a, numb: Word; const k: Byte): LongWord;
  18. var
  19.     Result: LongWord;
  20. begin
  21.     if (numb >= a)
  22.     then
  23.     begin
  24.         Result := HaveK(numb, k) + Rec(a, numb - 1, k);
  25.     end
  26.     else
  27.         Result := 0;
  28.     Rec := Result;
  29. end;
  30.  
  31. var
  32.     a, b: Word;
  33.     k: Byte;
  34. begin
  35.     Write('Input a='); ReadLn(a);
  36.     repeat
  37.         Write('Input b(>=', a, ')=');
  38.         ReadLn(b);
  39.     until (b >= a);
  40.     repeat
  41.         Write('Input k=');
  42.         ReadLn(k);
  43.     until (k < 10);
  44.     WriteLn('Sum=', Rec(a, b, k));
  45. end.

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

  1. Объявляется функция HaveK с параметрами:
    • numb (число типа Word),
    • k (цифра типа Byte). В функции также объявляются переменные:
    • flag (логическая переменная типа Boolean),
    • Result (целочисленная переменная типа Word).
  2. Происходит присвоение переменной Result значения переданного параметра numb.
  3. Инициируется цикл repeat...until, в котором проверяется наличие цифры k в числе numb:
    • Вычисляется flag как результат сравнения остатка от деления numb на 10 с числом k.
    • numb делится на 10 для последующей проверки следующей цифры. Цикл выполняется до тех пор, пока numb не станет равным 0 или пока flag будет равен true.
  4. Если flag равен false (то есть цифра k не встречается в числе numb), то переменной Result присваивается значение 0.
  5. Возвращается значение Result.
  6. Объявляется функция Rec с параметрами:
    • a (число типа Word),
    • numb (число типа Word),
    • k (цифра типа Byte). В функции также объявляется переменная Result типа LongWord.
  7. Проверяется, если numb больше или равно a, то:
    • Вызывается функция HaveK для проверки наличия цифры k в числе numb и результат суммируется с рекурсивным вызовом функции Rec с уменьшенным значением numb на 1.
    • Результат сохраняется в переменной Result.
  8. Если numb меньше a, переменной Result присваивается значение 0.
  9. Возвращается значение Result.
  10. Объявляются переменные:
    • a (число типа Word),
    • b (число типа Word),
    • k (цифра типа Byte).
  11. Вводятся значения a, b и k с клавиатуры.
  12. Вызывается функция Rec с параметрами a, b и k, и результат выводится на экран.

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


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

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

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

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

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

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