Распечатать самое длинное слово текста, в котором все буквы разные - 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