Подсчет слов-чисел в строке - C (СИ)

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

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

Здравствуйте. Необходимо подсчитать в произвольной строке слова-числа, т.е., например, строка: qwer1234 asdf 345 ds123sda 12 123dsfs Получаем: 345 12 стаж месяц). вот что у меня получилось. Спасибо.
Листинг программы
  1. #include<stdio.h>
  2. #include<conio.h>
  3. #include<stdlib.h>
  4. #include<string.h>
  5. int main()
  6. {
  7. char x[100];
  8. int k;
  9. printf("Vvedite stroku: ");
  10. fflush(stdin);
  11. gets(x);
  12. if(x[0]==' ')
  13. k=0;
  14. else
  15. k=1;
  16. for(int i=0; x[i]!='\0'; i++)
  17. {
  18. if(x[i]==' ' && x[i+1]!=' ' && x[i+1]!='\0')
  19. k++;
  20. }
  21. printf("\n\nKolichestvo slov: %d\n", k);
  22. int k1=0;
  23. for(int i=0; x[i]!='\0'; i++)
  24. {
  25. if((x[i]>='0' && x[i]<='9') || (x[i]>='a' && x[i]<='z') || (x[i]>='A' && x[i]<='Z'))
  26. k1++;
  27. }
  28. printf("\n\nKolichestvo bukv i cifr: %d\n", k1);
  29.  
  30. getch();
  31. return 0;
  32. }
забыл добавить. нельзя использовать функцию isdigit Спасибо.

Решение задачи: «Подсчет слов-чисел в строке»

textual
Листинг программы
  1.     while (subString != NULL)
  2.     {
  3.         for (p = subString; *p != '\0'; p++) {
  4.             if (!isdigit(*p)) break;
  5.         }
  6.           if (*p=='\0') {
  7.            printf("%s ", subString);
  8.            ++n;
  9.         }
  10.         subString = strtok(NULL, delim);
  11.     }

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

В этом коде происходит подсчет слов-чисел в строке. Вот список действий:

  1. Подготовительные действия:
    • Переменная subString содержит подстроку из исходной строки, которую необходимо проанализировать.
    • Переменная p используется как указатель на текущий символ в подстроке.
    • Переменная n используется для подсчета количества найденных слов-чисел.
    • Переменная delim содержит разделитель, который используется для разделения строк на слова.
  2. Проверка каждого символа в подстроке:
    • Внешний цикл while продолжается до тех пор, пока не будет получено значение NULL для переменной subString. Это происходит, когда подстрока исчерпывается.
    • Внутренний цикл for проходит по каждому символу в подстроке.
    • Если символ является числом (проверка с помощью функции isdigit), то цикл продолжается. Если символ не является числом, то цикл прерывается.
    • Если внутренний цикл завершается, значит, подстрока полностью состоит из чисел, и она считается словом-числом.
  3. Действия после обнаружения слова-числа:
    • Если внутренний цикл завершается с условием *p == '\0', это означает, что была найдена строка, заканчивающаяся числом.
    • В этом случае переменная n увеличивается на единицу.
    • Значение переменной subString заменяется на следующую подстроку из исходной строки, разделенную на слова с помощью функции strtok. В результате выполнения этого кода будет выведено количество слов-чисел в исходной строке.

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


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

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

12   голосов , оценка 4.25 из 5

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

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

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