Подсчет слов-чисел в строке - C (СИ)
Формулировка задачи:
Здравствуйте. Необходимо подсчитать в произвольной строке слова-числа, т.е., например, строка:
qwer1234 asdf 345 ds123sda 12 123dsfs
Получаем:
345 12
стаж месяц). вот что у меня получилось.
Спасибо.
Листинг программы
- #include<stdio.h>
- #include<conio.h>
- #include<stdlib.h>
- #include<string.h>
- int main()
- {
- char x[100];
- int k;
- printf("Vvedite stroku: ");
- fflush(stdin);
- gets(x);
- if(x[0]==' ')
- k=0;
- else
- k=1;
- for(int i=0; x[i]!='\0'; i++)
- {
- if(x[i]==' ' && x[i+1]!=' ' && x[i+1]!='\0')
- k++;
- }
- printf("\n\nKolichestvo slov: %d\n", k);
- int k1=0;
- for(int i=0; x[i]!='\0'; i++)
- {
- if((x[i]>='0' && x[i]<='9') || (x[i]>='a' && x[i]<='z') || (x[i]>='A' && x[i]<='Z'))
- k1++;
- }
- printf("\n\nKolichestvo bukv i cifr: %d\n", k1);
- getch();
- return 0;
- }
забыл добавить.
нельзя использовать функцию isdigit
Спасибо.
Решение задачи: «Подсчет слов-чисел в строке»
textual
Листинг программы
- while (subString != NULL)
- {
- for (p = subString; *p != '\0'; p++) {
- if (!isdigit(*p)) break;
- }
- if (*p=='\0') {
- printf("%s ", subString);
- ++n;
- }
- subString = strtok(NULL, delim);
- }
Объяснение кода листинга программы
В этом коде происходит подсчет слов-чисел в строке. Вот список действий:
- Подготовительные действия:
- Переменная
subString
содержит подстроку из исходной строки, которую необходимо проанализировать. - Переменная
p
используется как указатель на текущий символ в подстроке. - Переменная
n
используется для подсчета количества найденных слов-чисел. - Переменная
delim
содержит разделитель, который используется для разделения строк на слова.
- Переменная
- Проверка каждого символа в подстроке:
- Внешний цикл
while
продолжается до тех пор, пока не будет получено значениеNULL
для переменнойsubString
. Это происходит, когда подстрока исчерпывается. - Внутренний цикл
for
проходит по каждому символу в подстроке. - Если символ является числом (проверка с помощью функции
isdigit
), то цикл продолжается. Если символ не является числом, то цикл прерывается. - Если внутренний цикл завершается, значит, подстрока полностью состоит из чисел, и она считается словом-числом.
- Внешний цикл
- Действия после обнаружения слова-числа:
- Если внутренний цикл завершается с условием
*p == '\0'
, это означает, что была найдена строка, заканчивающаяся числом. - В этом случае переменная
n
увеличивается на единицу. - Значение переменной
subString
заменяется на следующую подстроку из исходной строки, разделенную на слова с помощью функцииstrtok
. В результате выполнения этого кода будет выведено количество слов-чисел в исходной строке.
- Если внутренний цикл завершается с условием
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д