Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Нужно написать функцию которая проверяет если все цифры первого числа присутствуют во втором

Аноним Анонимный Ученик (128), закрыт 4 года назад
есть эта функция, которая проверяет присутствие какой то цифры в числе, с помощью этой функции нужно написать еще одну, которая проверяет все цифры первого числа во втором. Не понимаю как это сделать

public static boolean digit(int num, int dig) {
int dig1 = 0;
while (num != 0)
{
dig1 = num % 10;
if (dig1 == dig)
return true;
else
num /= 10;
}
return false;
Лучший ответ
Jurijus Zaksas Искусственный Интеллект (420374) 4 года назад
С помощью ЭТОЙ функции этого делать не нужно. Нужно примерно следующее:

public static HashSet< int> GetDigits(int a)
{
HashSet< int> Result = new HashSet< int>();
while (a>0)
{
int k = a % 10;
a /= 10;
if (!Result.Contains(k))
Result.Add(k);
}
return Result;
}

public bool HaveSameDigits(int a, int b)
{
HashSet< int> DigitsA = GetDigits(a);
HashSet< int> DigitsB = GetDigits(b);
return DigitsA.Overlaps(DigitsB) && DigitsB.Overlaps(DigitsA);
}
Jurijus ZaksasИскусственный Интеллект (420374) 4 года назад
Если нужно только проверить первое относительно второго, то return DigitsA.Overlaps(DigitsB);
SchweikМыслитель (5771) 4 года назад
hash for decimal digits looks over-engineered...
Александр Искусственный Интеллект (289408) да... можно тупо всё в сэт сваливать не проверяя...
АлександрИскусственный Интеллект (289408) 4 года назад
что такое Overlaps? откуда оно?
Александр Искусственный Интеллект (289408) ах да... туплю... подумал что это джава...
Остальные ответы
Юрий Семыкин Искусственный Интеллект (185388) 4 года назад
В исходной функции ошибка: число "0" полностью содержит все цифры второго числа "0", а функция выдаст "false".
От вас требуется написать функцию с циклом, в котором получить очередную цифру второго числа, проверить функцией, если false, то return - попалась цифра, которой нет в первом числе. После цикла выход (return) - все цифры есть.
Только это задание по истории программирования.
Нормально решить: получить первое и второе число как строку и использовать методы строк (поиска, взождения и т д), а класснее использовать RegEx - регулярные выражения. Всё решение займёт не более 10 строк и вероятность ошибиться будет меньше.
Александр Искусственный Интеллект (289408) 4 года назад
типа чтобы в джаве уже такая готовая функция была?
таким темпами, скоро будете искать готовую функцию для вычисления исключительно суммы чисел 1 и 2...
Аноним АнонимныйУченик (128) 4 года назад
мне не нужна готовая функция . Дали задание на учебе, но и справились и без помощи интернета))))
Похожие вопросы