PDA

Visualizza la versione completa : [C]Variabele numero intera


arna98
25-10-2012, 18:56
Salve a tutti, avrei bisogno di aiuto!
Ho una variabile intera che voglio scomporre in altre variabili int che costituiscono le unità, le decine...
Per esempio.
a=456
Risultato
unita=6
decine=5
centinaia=4
Qualcuno sa se esiste una funzione di una libreria che permette di fare questo?
Se non esiste qualcuno potrebbe aiutarmi a crearne una che lo faccia?

Grazie

PS= mi andrebbe bene anche una Cosa del tipo:
unita=6
unita_decine=50
unita_centinaia=400

MItaly
25-10-2012, 19:41
Non c'è nulla di già fatto (o meglio, puoi usare la sprintf e ri-parsare la stringa generata, ma è piuttosto inefficiente nonché inutilmente complicato). Piuttosto, come faresti con carta e penna? (tip: gli operatori che ti servono sono la divisione intera e il resto della divisione)

Who am I
25-10-2012, 22:44
Le unità non sono altro che il numero stesso, preso ignorando le cifre maggiori o uguali a 10.Il modulo con 10 ritorna un numero compreso tra 0 e 9, per cui ti conviene usare l' operatore modulo.

arna98
26-10-2012, 15:21
Ho pensato di poter creare quasto ciclo for, che salva i risultati su una lista( funziona solo se il numero è minore di 16 cifre):


int valoreConv=inserisci un numero;

int mlc=1000000000000000;
int valoreConvList[16];
int i;
for (i=0;i<=16;i++)
{
int restDivOper=valoreConv%mlc;
if (restDivOper==valoreConv)
{
valoreConvList[i]=0;
mlc=mlc/10;
printf("0");
}
else
{
valoreConvList[i]=valoreConv/mlc;
valoreConv=restDivOper;
mlc=mlc/10;
printf("%d",valoreConvList[i]);
}

Il problema è che non funziona!!
Potreste aiutarmi????

MItaly
26-10-2012, 21:03
Non capisco perché complicarsi così la vita...


int numero=123456;
int cifre[5*sizeof(numero)*8/10]; // ogni 10 cifre binarie ci sono sicuramente meno di 5 cifre decimali
int i;
for(i=0; numero!=0; ++i)
{
cifre[i]=numero%10;
numero/=10
}
// in cifre ora ci sono le cifre di numero (complessivamente sono in numero di i)

arna98
27-10-2012, 07:31
grazie, proverò

Loading