Как можно разделить число на цифры в Си или С++?
Например, дано число 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
→ Ссылка
ваша функция должна принимать на вход число
nесли разделить
nпо модулю 10, то получится последняя цифраесли разделить
nнацело на 10, то получится число без последней цифрычисло полученное в п.3) надо передать опять этой же функции (вот и рекурсия)
если число 0 - надо прекратить рекурсию
чтобы вывести
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, ", ");
}