Распечатать самое длинное слово текста, в котором все буквы разные - C (СИ)
Формулировка задачи:
Помогите реализовать Задачу:
С клавиатуры вводится многострочный текст. Распечатать самое длинное слово, в котором все буквы разные.
Выручайте)Решение задачи: «Распечатать самое длинное слово текста, в котором все буквы разные»
textual
Листинг программы
- #include <stdio.h>
- #include <string.h>
- #define DELIM " ,.\t\n"
- int unique_letters(const char* s) {
- return ( ! *s ) ? 1 : strchr(s + 1, *s) ? 0 : unique_letters(s + 1);
- }
- int main(void) {
- char text[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor "
- "incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis "
- "nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. "
- "Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu "
- "fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in "
- "culpa qui officia deserunt mollit anim id est laborum.";
- char* ptr;
- const char* longestUnique = "";
- for ( ptr = strtok(text, DELIM); ptr; ptr = strtok(NULL, DELIM) )
- if ( unique_letters(ptr) && strlen(ptr) > strlen(longestUnique) )
- longestUnique = ptr;
- printf("%s\n", ( *longestUnique ) ? longestUnique : "No suitable words found.");
- return 0;
- }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с функциями ввода-вывода и строками
- Определяем строку-разделитель, которая будет использоваться для разделения слов в тексте
- Создаем функцию
unique_letters
, которая принимает на вход указатель на строку и возвращает 1, если текущий символ является уникальным, и 0 в противном случае (рекурсивный вызов функции) - Создаем массив
text
с текстом, который необходимо проанализировать - Создаем указатель
ptr
, который будет использоваться для перебора слов в тексте - Создаем переменную
longestUnique
, которая будет хранить самое длинное уникальное слово - Используем цикл
for
для перебора слов в тексте с помощью функцииstrtok
и разделителяDELIM
- Внутри цикла проверяем, является ли текущее слово уникальным с помощью функции
unique_letters
и сравниваем его длину с длиной самого длинного уникального слова - Если текущее слово уникально и его длина больше длины самого длинного уникального слова, то обновляем значение переменной
longestUnique
- После завершения цикла выводим на экран самое длинное уникальное слово или сообщение об отсутствии подходящих слов
- Завершаем программу с помощью функции
return
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д