Вывести те слова, в которых все символы разные - C (СИ)

Узнай цену своей работы

Формулировка задачи:

дано массив слов, и в каждом слове от 1 до 8 символов. Вывести те слова, в которых все символы разные

Решение задачи: «Вывести те слова, в которых все символы разные»

textual
Листинг программы
/*...*/
unsiged char COUNTERS[UCHAR_MAX + 1];
int unique(const char * s) {
    return ( *s == '\0' ) ? 1 : ( COUNTERS[(unsigned char)(*s)]++ ) ? 0 : unique(s + 1);
}
 
int main(void) {
    /*...*/
    memset(COUNTERS, 0, UCHAR_MAX + 1);
    printf("%s", ( unique(some_tested_string) ) ? "YES" : "NO");
    /*...*/
}

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

В этом коде:

  1. Объявлена массивная переменная COUNTERS типа unsigned char с размером UCHAR_MAX + 1. При этом UCHAR_MAX - это максимальное значение, которое может хранить тип unsigned char.
  2. Далее определена функция unique, которая принимает на вход указатель на строку s и возвращает 1, если все символы в строке уникальны, и 0 в противном случае. При первом вызове функции unique ей передается первый символ строки s. Если этот символ является нулевым (т.е. строка закончилась), функция возвращает 1. Если нет, то она увеличивает счетчик в соответствующей ячейке массива COUNTERS и рекурсивно вызывает саму себя, передавая в качестве аргумента s + 1 (т.е. следующий символ в строке). Если все символы в строке уникальны, функция возвращает 1, иначе - 0.
  3. В функции main сначала инициализируют все ячейки массива COUNTERS нулями с помощью функции memset.
  4. Затем вызывается функция unique с аргументом some_tested_string (который в коде не указан, но должен быть заменен на конкретную строку для проверки). Результат работы функции unique сохраняется в переменной.
  5. И наконец, с помощью функции printf выводится на экран строка YES, если все символы в строке уникальны, и NO в противном случае.
  6. В конце функции main есть незавершенная строка кода, которая начинается с /*...*/ и заканчивается на /*...*/.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4.444 из 5
Похожие ответы