Il problema è che non sai per quale multiplo di 10 devi moltiplicare il tutto. Hai di fatto due possibilità: trovare questo valore oppure usare una ricorsione a due funzioni.
La ricorsione ha due funzioni funziona più o meno così:
- Codice:
#include <iostream>
unsigned
inverti_internal( unsigned x, unsigned& mult )
{
if ( x < 10 )
{
mult = 10;
return x;
}
unsigned y = inverti_internal( x / 10, mult );
x = y + mult * ( x % 10 );
mult *= 10;
return x;
}
unsigned
inverti( unsigned x )
{
unsigned mult;
return inverti_internal( x, mult );
}
int
main( void )
{
std::cout << inverti( 12345 ) << std::endl;
}