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