Since we're now giving out alternative solutions, here's mine:
#include <iostream>
#include <iterator>
template <typename OutIt>
int sum_digits ( int value, int radix, OutIt *it = 0 )
{
if ( value == 0 )
return 0;
int digit = value % radix;
int sum = sum_digits ( value / radix, radix, it ) + digit;
if ( it != 0 )
*it++ = digit;
return sum;
}
int main()
{
std::cout<<"Enter an integer: ";
int value;
if ( std::cin>> value ) {
int sum = sum_digits ( value, 10,
&std::ostream_iterator<int> ( std::cout, " " ) );
std::cout<<"\nThe sum is "<< sum <<'\n';
}
}
Reputation Points: 6442
Solved Threads: 1393
Bad Cop
Offline 11,807 posts
since Sep 2004