Как можно разделить число на цифры в Си или С++?

Например, дано число 12345. Нужно получить 1 2 3 4 5 через рекурсию


Ответы (3 шт):

Автор решения: Harry

Да нечего делать...

void dig(int N)
{
    if (N==0) return;
    int k = N%10;
    dig(N/10);
    cout << k << " ";
}

int main(int argc, const char * argv[])
{
    dig(12345);
}
→ Ссылка
Автор решения: Zhihar
  1. ваша функция должна принимать на вход число n

  2. если разделить n по модулю 10, то получится последняя цифра

  3. если разделить n нацело на 10, то получится число без последней цифры

  4. число полученное в п.3) надо передать опять этой же функции (вот и рекурсия)

  5. если число 0 - надо прекратить рекурсию

  6. чтобы вывести 1 2 3 4 5, а не 5 4 3 2 1 надо вывести результат определения цифры после вызова функции

→ Ссылка
Автор решения: vp_arth
#include <cstdio>
#include <cmath>

void print_digits(int N, const char* sep)
{
    if (N==0) return;
    if (N < 0) printf("-%s", sep); // Печатаем знак, если есть

    int div = abs(N / 10);
    int mod = abs(N % 10);
    
    print_digits(div, sep);   // Печатаем все цифры, кроме последней
    printf("%d%s", mod, sep); // Печатаем последнюю цифру
}

#include <climits>
int main()
{
    print_digits(INT_MIN, ", ");
}

godbolt.org

→ Ссылка