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

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

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

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

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

textual
Листинг программы
function HaveK(numb: Word; k: Byte): Word;
var
    flag: Boolean;
    Result: Word;
begin
    Result := numb;
    repeat
        flag := ((numb mod 10) = k);
        numb := numb div 10;
    until ((numb = 0) Or (flag));
    if (Not flag)
    then
        Result := 0;
    HaveK := Result;
end;
 
function Rec(const a, numb: Word; const k: Byte): LongWord;
var
    Result: LongWord;
begin
    if (numb >= a)
    then
    begin
        Result := HaveK(numb, k) + Rec(a, numb - 1, k);
    end
    else
        Result := 0;
    Rec := Result;
end;
 
var
    a, b: Word;
    k: Byte;
begin
    Write('Input a='); ReadLn(a);
    repeat
        Write('Input b(>=', a, ')=');
        ReadLn(b);
    until (b >= a);
    repeat
        Write('Input k=');
        ReadLn(k);
    until (k < 10);
    WriteLn('Sum=', Rec(a, b, k));
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
Похожие ответы