Посчитать количество слов в строке и определить длину каждого слова - C (СИ)

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

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

Здравствуйте))) Помогите доделать задачку, она у меня худо-бедно считает кол-во слов во всей строке, но ещё нужно определить сколько слов длиной меньше 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);
}
То есть CountWord считает сколько всего в строке слов, а вот m должна посчитать сколько слов длиной меньше 4 символов. Как сделать, чтобы считало только те слова, которые длиной меньше 4 символов? Мне выводится еще предупреждение на вот эту строку:
  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();//Ну а это чтоб консоль сразу не сбрасывалась,
}

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

В этом коде осуществляется подсчет количества слов в строке и определение длины каждого слова.

  1. Ввод данных:
    • Строка вводится через командную строку.
    • Переменная str объявлена как массив символов на 1024 элемента.
    • Вместо ввода строки с клавиатуры используется функция strcpy(), которая копирует строку I can use the online Help system from the Help menu. в переменную str.
    • Переменные nWord, sLen и m инициализируются нулевыми значениями.
    • Переменная nChr инициализируется значением, которое считывается с помощью функции scanf().
    • Переменная chBuf инициализируется значением, равным последнему символу строки str.
  2. Обработка данных:
    • Используется цикл while, который выполняется до тех пор, пока chBuf не станет равным NULL.
    • Внутри цикла выполняются следующие действия:
      • Переменная n инициализируется значением strlen(chBuf).
      • Если длина текущего слова меньше nChr, то переменная m увеличивается на единицу.
      • Последний символ текущего слова заменяется на символ NULL.
      • Переменная sLen обновляется на длину строки без текущего слова.
      • Переменная nWord увеличивается на единицу.
  3. Вывод данных:
    • Выводится общее количество слов в строке с помощью 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();.

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


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

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

9   голосов , оценка 3.667 из 5
Похожие ответы