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