Я должен вывести цифры числа в виде целого числа, которое цифры этого числа могут точно разделить другое число с помощью функции unsigned deldigits(unsigned num, unsigned short div)
Например, если num=1234; div=2
, то цифры 1%2=1 (then i need the digit 1)
, 2%2=0(take out)
, 3%2=1 (then i need the digit 3)
, 4%2=0 (take out)
, поэтому выходные данные должны быть 13
как целое число.
Цикл, глобус / статическая переменная, массив или указатель НЕ допускаются (функции библиотеки также не разрешены, но я используюэто проверить в первую очередь). Я попытался использовать другую функцию, чтобы помочь и справиться со всеми функциями только с помощью рекурсии. Вычисление в середине было правильным, но каким-то образом выходное целое число не так, и я не могу его получить.
unsigned deldigits(unsigned num, unsigned short div)
{
if(num == 0) return 0;
int digit = num / (digitPower(num)/10);
int modulo = digit % div;
printf("ziffer: %d div: %d modulo: %d\n", digit, div, modulo);
if(digitPower(num) == 0)
return 0;
return (digit*10 + deldigits(num - digit*(digitPower(num)/10), div));
}
int digitPower(int n)
{
if(n == 0) return 1;
return 10*digitPower(n/10);
}
int main()
{
unsigned n = 1234;
unsigned short d = 2;
int z = deldigits(n, d);
printf("deldigits: %d\n", z);
return 0;
}
Основная функция - просто проверить функции и вывод. В этом случае вывод должен быть 13
, но теперь я получил неправильный вывод 120
. Может ли кто-нибудь помочь мне с этим? Спасибо!