Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s - Pascal ABC
Формулировка задачи:
Здравствуйте!
Условие задачи:
Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s.Решение задачи: «Описать рекурсивную функцию digits (s), которая подсчитывает сумму цифр в строке s»
textual
Листинг программы
function digits(i:byte;s:string):integer; var sum:integer; begin result:=0; if s[i] in ['0'..'9'] then inc(result,ord(s[i])-48); if i<length(s) then result:=result+digits(i+1,s); end; var s:string; begin writeln('Введите строку, содержащую цифры:'); readln(s); write('Сумма цифр=',digits(1,s)); end.
Объяснение кода листинга программы
- Функция
digits(i:byte;s:string)
объявлена как рекурсивная функция, которая принимает два аргумента:i
- индекс символа строкиs
, иs
- сама строка. - Переменная
sum
инициализируется значением 0, которое будет использоваться для накопления суммы цифр. - В условии
if s[i] in ['0'..'9'] then
проверяется, является ли символ в строкеs
цифрой от 0 до 9. Если это так, то с помощью функцииord(s[i])-48
преобразуется в соответствующий числовой код и добавляется к сумме. - Если
i
меньше длины строкиs
, то вызывается рекурсивно функцияdigits(i+1,s)
для подсчета суммы цифр в следующем символе строки. Результат этого вызова добавляется к сумме. - В основной части программы пользователю предлагается ввести строку, содержащую цифры. Затем выводится сообщение с суммой цифр, подсчитанной функцией
digits(1,s)
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д