Ввести предложение и вывести его самое долгое слово - C (СИ)

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

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

Такое задание: нужно ввести предложение и вывести его самое долгое слово. Запрещается использовать тип даных

string

, использовать только массивы символов.Помогите пожалуйста.

Решение задачи: «Ввести предложение и вывести его самое долгое слово»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3. #define is_delim(c) (isspace((c)) || ispunct((c)))
  4.  
  5. const char* maxlen_word(const char* s, const char** e){
  6.     int   k = 0, n = 0;
  7.     const char* p = NULL;
  8.     do {
  9.         if(!*s || is_delim(*s)){
  10.             if(n > k){
  11.                 k = n;
  12.                 p = s - n;
  13.             }
  14.             n = 0;
  15.         } else
  16.             ++n;
  17.     } while(*s++ != '\0');
  18.  
  19.     if(p != NULL)
  20.         *e = p + k;
  21.     return p;
  22. }
  23.  
  24. int main(void){
  25.     const char* p, *e;
  26.     char s[] = "Algol Snobol Cobol Fortran Lisp Prolog.";
  27.    
  28.     puts(s);
  29.    
  30.     p = maxlen_word(s, &e);
  31.     if(p != NULL){
  32.         printf("%.*s\n", e - p, p);
  33.  
  34.         //можно вывести так
  35.         while(p != e)
  36.             putchar(*p++);
  37.     }
  38.     return 0;
  39. }

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

  1. Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода и символами
  2. Определяем функцию is_delim, которая проверяет является ли символ пробелом или знаком препинания
  3. Создаем функцию maxlen_word, которая принимает на вход строку и два указателя. Один указывает на начало подстроки, а второй на ее конец. Внутри функции создаем три переменные: k - счетчик максимальной длины слова, n - счетчик текущего слова и p - указатель на начало самого длинного слова. В цикле do-while считываем каждый символ строки. Если текущий символ является пробелом или знаком препинания, то проверяем, является ли текущее слово самым длинным. Если да, то обновляем значения переменных k и p. После прохождения всего цикла, проверяем, было ли найдено самое длинное слово и возвращаем указатель на его начало
  4. В функции main создаем указатель p для хранения начала самого длинного слова и указатель e для хранения конца самого длинного слова. Задаем исходную строку. Выводим исходную строку на экран. Затем вызываем функцию maxlen_word и передаем ей исходную строку и указатели на начало и конец самого длинного слова. После чего выводим самое длинное слово на экран
  5. Можно добавить дополнительный код для вывода самого длинного слова по символам, но он не был добавлен в представленный код

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


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

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

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы