Ввести предложение и вывести его самое долгое слово - C (СИ)
Формулировка задачи:
Такое задание: нужно ввести предложение и вывести его самое долгое слово. Запрещается использовать тип даных
string
, использовать только массивы символов.Помогите пожалуйста.Решение задачи: «Ввести предложение и вывести его самое долгое слово»
textual
Листинг программы
#include <stdio.h> #include <ctype.h> #define is_delim(c) (isspace((c)) || ispunct((c))) const char* maxlen_word(const char* s, const char** e){ int k = 0, n = 0; const char* p = NULL; do { if(!*s || is_delim(*s)){ if(n > k){ k = n; p = s - n; } n = 0; } else ++n; } while(*s++ != '\0'); if(p != NULL) *e = p + k; return p; } int main(void){ const char* p, *e; char s[] = "Algol Snobol Cobol Fortran Lisp Prolog."; puts(s); p = maxlen_word(s, &e); if(p != NULL){ printf("%.*s\n", e - p, p); //можно вывести так while(p != e) putchar(*p++); } return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода и символами
- Определяем функцию is_delim, которая проверяет является ли символ пробелом или знаком препинания
- Создаем функцию maxlen_word, которая принимает на вход строку и два указателя. Один указывает на начало подстроки, а второй на ее конец. Внутри функции создаем три переменные: k - счетчик максимальной длины слова, n - счетчик текущего слова и p - указатель на начало самого длинного слова. В цикле do-while считываем каждый символ строки. Если текущий символ является пробелом или знаком препинания, то проверяем, является ли текущее слово самым длинным. Если да, то обновляем значения переменных k и p. После прохождения всего цикла, проверяем, было ли найдено самое длинное слово и возвращаем указатель на его начало
- В функции main создаем указатель p для хранения начала самого длинного слова и указатель e для хранения конца самого длинного слова. Задаем исходную строку. Выводим исходную строку на экран. Затем вызываем функцию maxlen_word и передаем ей исходную строку и указатели на начало и конец самого длинного слова. После чего выводим самое длинное слово на экран
- Можно добавить дополнительный код для вывода самого длинного слова по символам, но он не был добавлен в представленный код
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д