Ciao a tutti,
ho comprato un manuale in quanto ho intenzione di imparare il linguaggio C.
Svolgendo i vari esercizi presenti sul libro sono arrivato a dover scrivere un codice che mi permettesse di scomporre un numero di 5 cifre inserendo uno spazio tra ogni cifra.
Il codice che ho scritto è il seguente:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int numero, numero2, contatore;
printf("Inserisci un numero di cinque cifre:\n");
scanf("%d", &numero);
contatore = 10000;
while ( contatore >= 0){
numero2 = numero / contatore;
numero %= contatore;
printf("%d ", numero2 );
contatore /= 10;
}
}
Il programma è funzionante.
Rileggendolo però mi è sorto un dubbio riguardo alla seguente parte di codice:
numero2 = numero / contatore;
numero %= contatore;
printf("%d ", numero2 );
Il dubbio che ho è il seguente:
avendo la necessità di scomporre un numero intero di 5 cifre dovrò necessariamente usare l'operatore "/", il quale senza l'operatore di resto produrrebbe:
Numero: 12345
Risultato: 1 12 123 1234 12345
Il che è logico dal momento che la variabile numero è un numero intero e di conseguenza i valori dopo la virgola non vengono considerati.
Quindi risulta necessario inserire l'operatore di resto "%" per avere come risultato:
Numero: 12345
Risultato: 1 2 3 4 5
Il dubbio che mi è sorto rileggendo il codice è: in che modo operano i due operatori?
Mi spiego meglio:
Se numero2 = 12345 / 10.000 = 1,2345 ( quindi essendo "numero" intero verranno tagliati i decimali lasciando come risultato 1 )
e numero %= contatore equivale a dire: numero = 12345 % 10.000 = 0,2345, in che modo i due valori lavorano nel "printf"?
E come mai se sposto "numero %= contatore;" da sopra il "printf" a sotto il risultato non cambia? Il programma non legge il codice dall'alto verso il basso?
Spero di essere stato chiaro nel porre la domanda e chiedo scusa se può risultare una domanda banale, ma forse a furia di continuare a leggere il codice mi sto confondendo da solo.
Grazie in anticipo.