Inversione Numeri.

di il
3 risposte

Inversione Numeri.

Nel seguente programma:
 
 #include <stdio.h>

int reverseDigits( int n);//Prototipo di funzione

int main() {
    printf("%s", "Numero iniziale:");
    int number;
    scanf("%d", &number);


    //trova il numero con le cifre invertite
    printf("Il numero invertito: %d\n", reverseDigits(number));
}

//reverseDigits restituisce il numero ottenuto invertendo le cifre di n
int reverseDigits(int n)
{
    int reverse = 0;//numero invertito
    int part = 0;//variabile temporanea per cifre singole

    while(n>1) {
        part = n % 10;
        reverse = reverse * 10 + part;
        n = n / 10;
    }
    return reverse;//restituzione di numero invertito
    }
 


Non mi è chiaro come opera il ciclo while, cioè non riesco a capire come opera questa parte:
 
 while(n>1) {
        part = n % 10;
        reverse = reverse * 10 + part;
        n = n / 10;
 


Comprendo perfettamente che lo stesso ciclo lavora sui singoli numeri e infatti se io inserisco il numero iniziale 7631, il ciclo while esamina il primo numero è fa i seguenti cacloli:

7%10=7

ma poi non comprendo quello che fa nella parte successiva e cioè questa:

reverse = reverse * 10 + part;
n = n / 10;


Cosa è che fa in questa parte per me incriminata?

3 Risposte

  • Re: Inversione Numeri.

    Cosa non ti è chiaro? È matematica da scuole elementari...
  • Re: Inversione Numeri.

    Se n è 7631 puoi vedere con delle printf cosa succede

    n 7631 part 1 reverse 1 n 763

    n 763 part 3 reverse 13 n 76

    n 76 part 6 reverse 136 n 7

    n 7 part 7 reverse 1367 n 0

    Ricorda che la moltiplicazione per 10 shifta le cifre di una posizione a sinistra e la divisione per 10 shifta le cifre a destra.
  • Re: Inversione Numeri.

    Adesso e' chiaro!
    Vi ringrazio
Devi accedere o registrarti per scrivere nel forum
3 risposte