Определить количество слов в строке длиной от N-1 до N+1 символов - C (СИ)

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

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

Дана строка предложение. Определить количество слов в строке длиной от N-1 до N+1 символов. Число N указывает пользователь Помогите пожалуйста, а то как-то условия не очень понимаю(

Решение задачи: «Определить количество слов в строке длиной от N-1 до N+1 символов»

textual
Листинг программы
#include <stdio.h>
#include <string.h>
 
#define DELIM " \t\n"
typedef char string_t[256];
#define get_string(s) ( scanf("%255[^\n]%*c", (s)) == 1 )
typedef unsigned length_t;
#define get_length(pl, pt) ( scanf("%u%c", (pl), (pt)) == 2 && *(pt) == '\n' )
 
int main(void) {
    string_t str;
    length_t len;
    char tail;
    
    while ( printf("String: ") && get_string(str) && printf("Average length: ") && get_length(&len, &tail) ) {
        char * ptr = strtok(str, DELIM);
        while ( ptr ) {
            length_t wordlen = strlen(ptr);
            if ( wordlen >= len - 1 && wordlen <= len + 1 )
                printf("%s\n", ptr);
            ptr = strtok(NULL, DELIM);
        }
    }
    
    return 0;
}

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

  1. Подключение необходимых библиотек: stdio.h и string.h.
  2. Определение строки-разделителя и типа строки.
  3. Установка значений макросов: DELIM - разделитель, string_t - тип строки, get_string - функция считывания строки, get_length - функция считывания длины строки.
  4. Объявление переменных: str - строка, len - длина строки, tail - символ конца строки.
  5. Организация цикла, который считывает строку, длину слова и выводит слова, длина которых находится в заданном диапазоне.
  6. Внутри цикла считывается первое слово и сохраняется его указатель.
  7. Пока есть слова в строке, выводится каждое слово, удовлетворяющее условию, и считывается следующее слово.
  8. После выхода из цикла, программа завершается.
  9. Значение DELIM - это строка, разделяющая слова в строке (\t\n).
  10. Тип string_t - это массив символов длиной 256.
  11. Макрос get_string считывает строку, не включая символ новой строки, и возвращает 1 при успешном считывании.
  12. Макрос get_length считывает два значения: целое число и символ новой строки.
  13. Если второе значение равно символу новой строки, функция возвращает 2.
  14. В цикле слова в строке разделяются по символам из DELIM.
  15. Если длина слова находится в заданном диапазоне, слово выводится на экран.
  16. Для определения диапазона длин слов используется операция инкремента и декремента.
  17. Значение len - это длина строки, считанная функцией get_length.
  18. Значение tail - это символ новой строки, считанный функцией get_length.
  19. В цикле используются функции strtok и strlen для разделения строки на слова и определения длины каждого слова.
  20. Если длина слова находится в заданном диапазоне, слово выводится на экран.

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


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

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

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