Посчитать количество слов в строке и определить длину каждого слова - C (СИ)
Формулировка задачи:
Здравствуйте)))
Помогите доделать задачку, она у меня худо-бедно считает кол-во слов во всей строке, но ещё нужно определить сколько слов длиной меньше 4 символов.
Вот код:
То есть CountWord считает сколько всего в строке слов, а вот m должна посчитать сколько слов длиной меньше 4 символов.
Как сделать, чтобы считало только те слова, которые длиной меньше 4 символов?
Мне выводится еще предупреждение на вот эту строку:
#include <stdio.h> #include <string.h> void main() { int i=1, m=0; char *s="I can use the online Help system from the Help menu."; int CountWord=1; for (i=1; i < strlen(s); i++) { if (s[i-1]==' ' && s[i]!=' ') CountWord++; if (strlen(s[i])<4) m++; } printf("Kol-vo slov = %d\n %d", CountWord, m); }
if (strlen(s[i])<4)
Решение задачи: «Посчитать количество слов в строке и определить длину каждого слова»
textual
Листинг программы
#include <stdio.h> #include <string.h> char str[1024]; void main() { // printf("Enter input string\r\n"); // scanf("%s",&str); strcpy(str,"I can use the online Help system from the Help menu."); printf("Enter number char in words with length less then num :\r\n"); int nWord = 0, sLen = strlen(str), m = 0, n = 0; int nChr = -1; scanf("%d",&nChr); char * chBuf = strrchr(str,' '); while(chBuf) { n = strlen(chBuf); if(n - 1 < nChr) m++; str[sLen - n] = '\0'; chBuf = strrchr(str,' '); sLen = strlen(str); nWord++; } printf("Total WordCount = %d\n",nWord); printf("Number words with length less then %d is : %d\r\n", nChr, m); printf("Press any key to exit from program..."); getchar();getchar();//Ну а это чтоб консоль сразу не сбрасывалась, }
Объяснение кода листинга программы
В этом коде осуществляется подсчет количества слов в строке и определение длины каждого слова.
- Ввод данных:
- Строка вводится через командную строку.
- Переменная
str
объявлена как массив символов на 1024 элемента. - Вместо ввода строки с клавиатуры используется функция
strcpy()
, которая копирует строкуI can use the online Help system from the Help menu.
в переменнуюstr
. - Переменные
nWord
,sLen
иm
инициализируются нулевыми значениями. - Переменная
nChr
инициализируется значением, которое считывается с помощью функцииscanf()
. - Переменная
chBuf
инициализируется значением, равным последнему символу строкиstr
.
- Обработка данных:
- Используется цикл
while
, который выполняется до тех пор, покаchBuf
не станет равнымNULL
. - Внутри цикла выполняются следующие действия:
- Переменная
n
инициализируется значениемstrlen(chBuf)
. - Если длина текущего слова меньше
nChr
, то переменнаяm
увеличивается на единицу. - Последний символ текущего слова заменяется на символ
NULL
. - Переменная
sLen
обновляется на длину строки без текущего слова. - Переменная
nWord
увеличивается на единицу.
- Переменная
- Используется цикл
- Вывод данных:
- Выводится общее количество слов в строке с помощью
printf(
Total WordCount = %d\n,nWord)
. - Выводится количество слов с длиной меньше
nChr
с помощьюprintf(
Number words with length less then %d is : %d\r\n, nChr, m)
. - Выводится сообщение
Press any key to exit from program...
с помощьюprintf(
Press any key to exit from program...);
. - Для предотвращения сброса консоли после выхода из программы используется функция
getchar();getchar();
.
- Выводится общее количество слов в строке с помощью
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д