Описать рекурсивную функцию 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.

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

  1. Функция digits(i:byte;s:string) объявлена как рекурсивная функция, которая принимает два аргумента: i - индекс символа строки s, и s - сама строка.
  2. Переменная sum инициализируется значением 0, которое будет использоваться для накопления суммы цифр.
  3. В условии if s[i] in ['0'..'9'] then проверяется, является ли символ в строке s цифрой от 0 до 9. Если это так, то с помощью функции ord(s[i])-48 преобразуется в соответствующий числовой код и добавляется к сумме.
  4. Если i меньше длины строки s, то вызывается рекурсивно функция digits(i+1,s) для подсчета суммы цифр в следующем символе строки. Результат этого вызова добавляется к сумме.
  5. В основной части программы пользователю предлагается ввести строку, содержащую цифры. Затем выводится сообщение с суммой цифр, подсчитанной функцией digits(1,s).

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

13   голосов , оценка 3.769 из 5
Похожие ответы