Inversione di un numero con ricorsione C++

Messaggioda Alex7337 » 02/07/2019, 09:09

Salve ragazzi, vorrei chiedervi un parere riguardo il seguente codice che è in grado di invertire un numero di 2 o 3 cifre ma non di 4... potreste suggerirmi un metodo per invertire qualsiasi numero? :
Codice:
#include <iostream>

using namespace std;

int inversione(int x){
    if(x/10 == 0)
    {
        return x;
    }
    else if(x/10>=10 && x/10<1003)
    {
        return (((x%100)%10)*100)+inversione(x/10);
       
    }
     return (x%10)*10+inversione(x/10);}

int main()
{
    int x, inverso;
    cout<<"inserire un numero x da invertire : ";
    cin>>x;
    inverso=inversione(x);
    cout<<"il numero invertito è il seguente : "<<inverso<<endl;
   
    return 0;
}
Alex7337
New Member
New Member
 
Messaggio: 21 di 61
Iscritto il: 25/01/2019, 16:42

Re: Inversione di un numero con ricorsione C++

Messaggioda vict85 » 02/07/2019, 11:52

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;
}
vict85
Moderatore
Moderatore
 
Messaggio: 9750 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite