Ввести предложение и вывести его самое долгое слово - 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 и передаем ей исходную строку и указатели на начало и конец самого длинного слова. После чего выводим самое длинное слово на экран
- Можно добавить дополнительный код для вывода самого длинного слова по символам, но он не был добавлен в представленный код
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д