Invertire un numero intero senza vettori

Un problema matematico, prima ancora che informatico, ma molto interessante per spremere le meningi degli studenti. L’esercizio è apparentemente semplice: prendere in ingresso un numero intero es. 1234 e stampare il suo inverso 4321. Vediamo come.

Il problema è di natura matematica. Si poggia sulle divisioni intere successive per 10 che permettono di tagliare fuori una cifra a destra, mentre usiamo il modulo % 10 per ottenere il resto e usarlo pesandolo moltiplicandolo di 10 in dieci. Detto così sembra semplice. La difficoltà per lo studente alle prime armi nel cogliere la soluzione è nel creare ed usare la variabile risultato che si comporta un po’ come un accumulatore, che viene usato ed aggiornato all’interno del ciclo e  come condizione di uscita.

using namespace std;

int inverti(int num)
{
    int risultato = 0;
    while (num!=0)
    {
        risultato = risultato * 10 + num % 10;
        num = num / 10;
    }
    return risultato;
}


int main()
{
    int num = 0;
    cin >> num;

    num = inverti(num);
    cout << num;

    return 0;
}

Ultima modifica 25 Gennaio 2022

Lascia un commento