Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству - C (СИ)
Формулировка задачи:
Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству в слове Нет повторяющихся букв
Решение задачи: «Напечатать те слова последовательности, которые отличны от первого слова и удовлетворяют следующему свойству»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <limits.h> int unique_letters(const char * s) { int counters[UCHAR_MAX + 1] = { 0 }; for ( ; *s; ++s ) { if ( counters[(unsigned)*s] ) return 0; counters[(unsigned)*s]++; } return 1; } void func(char * s, const char * delim) { static char * first = NULL; if ( s ) { if ( ! ( first = strtok(s, delim) ) ) return; func(NULL, delim); } else { if ( ! ( s = strtok(NULL, delim) ) ) return; if ( strcmp(s, first) && unique_letters(s) ) printf("%s\n", s); func(NULL, delim); } } #define DELIM " \t\n" int main(void) { char buf[BUFSIZ]; while ( printf("String: ") && fgets(buf, BUFSIZ, stdin) && *buf != '\n' ) func(buf, DELIM); return 0; }
Объяснение кода листинга программы
- Программа начинается с функции
main
, которая считывает строку из стандартного ввода до тех пор, пока не встретит символ новой строки. - Функция
func
вызывается для каждой строки, полученной в качестве входного параметра. - Если строка пустая, то функция прекращает свою работу.
- В противном случае, функция ищет первое непустое поле в строке и добавляет его в начало строки.
- Затем функция вызывает саму себя рекурсивно для оставшейся части строки.
- Если строка пустая, то функция прекращает свою работу.
- В противном случае, функция проверяет, является ли текущее слово уникальным (не равным первому слову) и удовлетворяет ли оно условию (не содержит повторяющихся букв).
- Если слово удовлетворяет обоим условиям, то оно выводится на экран.
- Функция
main
использует функциюprintf
для вывода сообщенияString:
и считывает строку с помощьюfgets
. - Если строка не пустая, то она передает ее в функцию
func
. - Если строка пустая, то программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д