Сумма чисел в Строковом Типе - C (СИ)
Формулировка задачи:
Доброго времени суток друзья.
Вопрос такой, как мне сделать функцию делающую сумму чисел в Строковом Типе.
пример:
я ввел такой тип: dgGsdHfgS32fg dfr 3 fgfg.
фуннкция делает сумму 32+3 и возвращает 35.
есть идеи?
заранее спасибо
Решение задачи: «Сумма чисел в Строковом Типе»
textual
Листинг программы
#include <ctype.h> #include <errno.h> #include <stdlib.h> #include <stdio.h> unsigned long str_sum(const char *str) { unsigned long sum = 0; const char *p = str; do { for (;*p != '\0' && !isdigit(*p); ++p); if (*p == '\0') break; char *end; errno = 0; unsigned long num = strtoul(p, &end, 10); if (errno != ERANGE) sum += num; p = end; } while (1); return sum; } int main(void) { const char *str = "dgGsdHfgS32fg dfr 3 fgfg"; printf("%lu\n", str_sum(str)); }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями стандартного ввода/вывода, обработки ошибок и работы со строками.
- Определяем функцию
str_sum
, которая принимает в качестве аргумента указатель на строку символов и возвращает сумму всех чисел в этой строке. - Инициализируем переменную
sum
со значением 0, которая будет использоваться для хранения суммы чисел. - Создаем указатель
p
, который будет использоваться для перемещения по строкеstr
. - Запускаем цикл
do
, который будет выполняться до тех пор, пока не встретит символ '\0'. - Внутри цикла
do
используем вложенный циклfor
, чтобы проверить каждый символ в текущем числе на цифру. - Если текущий символ является числом, то преобразуем его в тип
unsigned long
с помощью функцииstrtoul
. - Проверяем, было ли ошибкой преобразование числа и если нет, то добавляем полученное число к переменной
sum
. - Перемещаем указатель
p
на символ, следующий за последним числом. - После выхода из вложенного цикла
for
проверяем, достигли ли мы конца строки. Если да, то выходим из циклаdo
. - Возвращаем значение переменной
sum
из функцииstr_sum
. - В функции
main
определяем строкуstr
, которую будем использовать для тестирования функцииstr_sum
. - Вызываем функцию
str_sum
с аргументомstr
и выводим результат на экран с помощью функцииprintf
. - В данном случае выведется значение суммы всех чисел в строке
dgGsdHfgS32fg dfr 3 fgfg
, равное 33.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д