Найти строку максимальной длины в тексте без библиотеки string.h - C (СИ)

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

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

Нужна программа определения строки максимальной длины в тексте, что вводится с клавиатуры без библиотеки string.h

Решение задачи: «Найти строку максимальной длины в тексте без библиотеки string.h»

textual
Листинг программы
#include <stdio.h>
#include <ctype.h>
 
typedef struct Word_t {
    char* str;
    size_t len;
}   Word;
 
//-----------------------------------------------------------------------------
size_t getWord(char* str, char** begin, char** end) {
    for (; *str && !isalpha(*str); ++str) { ; }
    *begin = str;
 
    for (; *str && isalpha(*str); ++str) { ; }
    *end = str;
 
    return *end - *begin;
}
//-----------------------------------------------------------------------------
Word getMaxWord(char* str) {
    Word maxWord = {NULL, 0};
    char* begin, * end;
    size_t len = 0;
 
    while ((len = getWord(str, &begin, &end))) {
        if (maxWord.len < len) {
            maxWord.str = begin;
            maxWord.len = len;
        }
        str = end;
    }
 
    return maxWord;
}
//-----------------------------------------------------------------------------
 
int main() {
    char text[] = "Hello World. This is test program!";
    Word word = getMaxWord(text);
 
    if (word.len) {
        printf("%.*s\n", word.len, word.str);
    }
 
    return 0;
}

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

  1. Структура Word_t объявляет переменные str и len типа char* и size_t соответственно.
  2. Функция getWord принимает два указателя str и два указателя-результата begin и end.
  3. В первой части цикла, пока не встретится буква или пробел, строка сдвигается к следующему символу.
  4. Во второй части цикла, пока не встретится символ, не являющийся буквой, строка сдвигается к следующему символу.
  5. Длина слова сохраняется в переменной len, и если это слово длиннее, чем предыдущее максимальное слово, то обновляется значение maxWord.
  6. В цикле while, пока есть слова в строке, вызывается функция getWord и проверяется, является ли текущее слово длиннее максимального слова.
  7. Если текущее слово длиннее, то обновляется значение maxWord.
  8. В функции main объявляется переменная text типа char* и инициализируется строкой Hello World. This is test program!.
  9. Вызывается функция getMaxWord с аргументом text.
  10. Результат функции getMaxWord присваивается переменной word.
  11. Если длина слова больше нуля, то выводится максимальное слово.
  12. В функции main возвращается 0, что означает успешный конец работы программы.

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


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

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

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