Подсчет суммы чисел в строке не используя функции string.h - C (СИ)
Формулировка задачи:
Доброго времени суток.Задача состоит в том , чтобы подсчитать сумму чисел в строке, слова в которой могут состоять только из цифр или букв.Моя проблема состоит в том, что я не могу понять как сказать компилятору не считывать каждый символ в строке.
Для лучшего пояснения что мне нужно, прибегну к математике, если я введу asd 55 posd 41, в коде ниже sum = 18, мне нужно чтобы sum = 96
Листинг программы
- include <stdio.h>
- #include <conio.h>
- #include <locale.h>
- #include <malloc.h>
- void main()
- {
- setlocale(LC_ALL, "Rus");
- int i;
- int sum = 0;
- char *str;
- str = (char *)malloc(10);
- printf("Введите строку:");
- gets(str);
- for (i = 0;str[i] != 0; i++)
- {
- if (str[i] >= '0' && str[i] <= '9' )
- {
- sum += str[i] - '0';
- }
- }
- printf("sum=%d\n", sum);
- return 0;
- }
Решение задачи: «Подсчет суммы чисел в строке не используя функции string.h»
textual
Листинг программы
- #include <stdio.h>
- int main()
- {
- const char *str = "asd 55 posd 4 fff 41";
- unsigned sum = 0;
- for (const char *p = str; *p != '\0'; )
- {
- unsigned v, n;
- if (sscanf(p, "%u%n", &v, &n) == 1)
- sum += v;
- else
- sscanf(p, "%*s%n", &n);
- p += n;
- }
- printf("%u\n", sum);
- }
Объяснение кода листинга программы
- В этом коде используется стандартная библиотека языка C.
- Задача программы - подсчитать сумму чисел в строке.
- Строка для подсчета суммы чисел:
asd 55 posd 4 fff 41
. - В начале программы объявляется указатель на строку с этой строкой.
- Затем объявляется переменная типа unsigned для хранения суммы чисел.
- Далее в цикле for происходит проход по строке с помощью указателя p.
- На каждой итерации цикла проверяется корректность чтения числа с помощью функции sscanf.
- Если число успешно прочитано, оно добавляется к сумме.
- Если чтение числа не удалось, то с помощью функции sscanf считывается количество символов, которые должны быть пропущены (чтобы пропустить число, которое не является числом).
- После каждой итерации указатель p увеличивается на количество символов, которые должны быть пропущены.
- В конце программы выводится сумма чисел.
- Ответ: 55.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д