Сумма чисел в Строковом Типе - 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));
}

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

  1. Включаем необходимые заголовочные файлы для работы с функциями стандартного ввода/вывода, обработки ошибок и работы со строками.
  2. Определяем функцию str_sum, которая принимает в качестве аргумента указатель на строку символов и возвращает сумму всех чисел в этой строке.
  3. Инициализируем переменную sum со значением 0, которая будет использоваться для хранения суммы чисел.
  4. Создаем указатель p, который будет использоваться для перемещения по строке str.
  5. Запускаем цикл do, который будет выполняться до тех пор, пока не встретит символ '\0'.
  6. Внутри цикла do используем вложенный цикл for, чтобы проверить каждый символ в текущем числе на цифру.
  7. Если текущий символ является числом, то преобразуем его в тип unsigned long с помощью функции strtoul.
  8. Проверяем, было ли ошибкой преобразование числа и если нет, то добавляем полученное число к переменной sum.
  9. Перемещаем указатель p на символ, следующий за последним числом.
  10. После выхода из вложенного цикла for проверяем, достигли ли мы конца строки. Если да, то выходим из цикла do.
  11. Возвращаем значение переменной sum из функции str_sum.
  12. В функции main определяем строку str, которую будем использовать для тестирования функции str_sum.
  13. Вызываем функцию str_sum с аргументом str и выводим результат на экран с помощью функции printf.
  14. В данном случае выведется значение суммы всех чисел в строке dgGsdHfgS32fg dfr 3 fgfg, равное 33.

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


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

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

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