Ввести предложение и вывести его самое долгое слово - 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;
}

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

  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
Похожие ответы