Определить, состоит ли число только из разных цифр - C (СИ)

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

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

Здравствуйте! Помогите пожалуйста написать функцию, проверяющую, состоит состоит ли число только из разных цифр. Заранее благодарен!

Решение задачи: «Определить, состоит ли число только из разных цифр»

textual
Листинг программы
int AreAllDigitsDifferent(unsigned n, unsigned digitMask/* = 0*/)
{
    const unsigned digitBit = 1 << (n % 10);
    return n == 0 || !(digitMask & digitBit) &&
        AreAllDigitsDifferent(n / 10, digitMask | digitBit);
}

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

В данном коде функция AreAllDigitsDifferent проверяет, состоит ли число из разных цифр. Функция принимает два параметра: n — число, которое необходимо проверить, и digitMask — переменная, которая используется для хранения информации о том, какие цифры уже были проверены. Сначала функция вычисляет, какая цифра находится на позиции n % 10 (остаток от деления n на 10). Затем она проверяет, является ли digitMask равным нулю, что означает, что все цифры уже были проверены. Если это не так, то функция проверяет, содержит ли digitMask бит, соответствующий текущей цифре (это делается с помощью оператора &). Если бит не содержит, то это означает, что текущая цифра не была проверена, и функция вызывает саму себя для оставшейся части числа (полученной путем деления n на 10) и нового значения digitMask, которое содержит бит текущей цифры. Если бит содержит, то это означает, что текущая цифра уже была проверена. В этом случае функция возвращает true, если n равно нулю, и false в противном случае. Список действий:

  1. Вычисляем digitBit как 1 << (n % 10).
  2. Проверяем, является ли digitMask равным нулю.
  3. Если digitMask не равен нулю, то проверяем, содержит ли digitMask бит, соответствующий текущей цифре (это делается с помощью оператора &).
  4. Если бит не содержит, то вызываем функцию AreAllDigitsDifferent для оставшейся части числа и нового значения digitMask.
  5. Если бит содержит, то проверяем, равно ли n нулю.
  6. Возвращаем true, если n равно нулю, и false в противном случае.

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


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

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

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