Подсчет суммы чисел в строке не используя функции string.h - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток.Задача состоит в том , чтобы подсчитать сумму чисел в строке, слова в которой могут состоять только из цифр или букв.Моя проблема состоит в том, что я не могу понять как сказать компилятору не считывать каждый символ в строке. Для лучшего пояснения что мне нужно, прибегну к математике, если я введу asd 55 posd 41, в коде ниже sum = 18, мне нужно чтобы sum = 96
Листинг программы
  1. include <stdio.h>
  2. #include <conio.h>
  3. #include <locale.h>
  4. #include <malloc.h>
  5. void main()
  6. {
  7. setlocale(LC_ALL, "Rus");
  8. int i;
  9. int sum = 0;
  10. char *str;
  11. str = (char *)malloc(10);
  12. printf("Введите строку:");
  13. gets(str);
  14. for (i = 0;str[i] != 0; i++)
  15. {
  16. if (str[i] >= '0' && str[i] <= '9' )
  17. {
  18. sum += str[i] - '0';
  19. }
  20. }
  21. printf("sum=%d\n", sum);
  22. return 0;
  23. }

Решение задачи: «Подсчет суммы чисел в строке не используя функции string.h»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.   const char *str = "asd 55 posd 4 fff 41";
  6.  
  7.   unsigned sum = 0;
  8.    
  9.   for (const char *p = str; *p != '\0'; )
  10.   {
  11.     unsigned v, n;
  12.     if (sscanf(p, "%u%n", &v, &n) == 1)
  13.       sum += v;
  14.     else
  15.       sscanf(p, "%*s%n", &n);
  16.      
  17.     p += n;
  18.   }
  19.  
  20.   printf("%u\n", sum);
  21. }

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

  1. В этом коде используется стандартная библиотека языка C.
  2. Задача программы - подсчитать сумму чисел в строке.
  3. Строка для подсчета суммы чисел: asd 55 posd 4 fff 41.
  4. В начале программы объявляется указатель на строку с этой строкой.
  5. Затем объявляется переменная типа unsigned для хранения суммы чисел.
  6. Далее в цикле for происходит проход по строке с помощью указателя p.
  7. На каждой итерации цикла проверяется корректность чтения числа с помощью функции sscanf.
  8. Если число успешно прочитано, оно добавляется к сумме.
  9. Если чтение числа не удалось, то с помощью функции sscanf считывается количество символов, которые должны быть пропущены (чтобы пропустить число, которое не является числом).
  10. После каждой итерации указатель p увеличивается на количество символов, которые должны быть пропущены.
  11. В конце программы выводится сумма чисел.
  12. Ответ: 55.

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


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

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

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы