Подсчет суммы чисел в строке не используя функции 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д