View Full Version : [C] Invertire variabile intera
Lucariello96
29-10-2013, 17:58
Ragazzi un altro piccolo problema..
Devo convertire una variabile di tipo intera in codice ASCII...
Prima cosa devo scomporre la variabile in numeri singoli e ci sono arrivato così:
while(numeri!=0){
printf("%d",numeri%10);
numeri=numeri/10;
}
Ora il problema è che riesco a separare i singoli numeri, solo che così me li scompone partendo dall'ultimo verso il primo...
Un informazione che potrebbe risolvermi il problema sarebbe scoprire da quanti numeri è composta la variabile, e girando in internet ho trovato solo sizeof, ma mi da sempre come risultato 4, e nn mi dice quanti numeri ci sono...
In mente avrei qualche soluzione, ma è brutta da scrivere..
Qualcuno mi sa dire il modo più veloce per farlo?
[Kendall]
29-10-2013, 18:46
Ragazzi un altro piccolo problema..
Devo convertire una variabile di tipo intera in codice ASCII...
Prima cosa devo scomporre la variabile in numeri singoli e ci sono arrivato così:
Ora il problema è che riesco a separare i singoli numeri, solo che così me li scompone partendo dall'ultimo verso il primo...
Un informazione che potrebbe risolvermi il problema sarebbe scoprire da quanti numeri è composta la variabile, e girando in internet ho trovato solo sizeof, ma mi da sempre come risultato 4, e nn mi dice quanti numeri ci sono...
In mente avrei qualche soluzione, ma è brutta da scrivere..
Qualcuno mi sa dire il modo più veloce per farlo?
sideof() restituisce la dimensione in memoria di una variabile (il numero di byte), quindi non è quello che cerchi.
Nel tuo caso comunque ti basta scomporre il numero nelle sue cifre come ti è stato spiegato, salvare tali cifre in un'array, quindi stampare le celle dell'array in senso inverso.
Per sapere da quante cifre è composto un numero.. come te la cavi con i logaritmi?
Lucariello96
29-10-2013, 19:32
Si anche io già avevo pensato a questo Kendal... pensavo che magari ci fosse qualcosa simile a sideof che mi faceva il conto, ma niente quindi... vabbè faccio con il vettore allora..
lasciamo stare i logaritmi XD
[Kendall]
29-10-2013, 20:18
Si anche io già avevo pensato a questo Kendal... pensavo che magari ci fosse qualcosa simile a sideof che mi faceva il conto, ma niente quindi... vabbè faccio con il vettore allora..
lasciamo stare i logaritmi XD
Il C è un linguaggio "a basso livello" (senza scomodare assembly, ovviamente).
Nel 90% dei casi non troverai nulla che ti semplifica la vita.
Comunque, essendo alle prime armi, ti consiglio di sbatterci sempre la testa sui problemi, e non cercare mai, se non strettamente necessario, funzioni che ti facilitino il compito.
Ragazzi un altro piccolo problema..
Devo convertire una variabile di tipo intera in codice ASCII...
Prima cosa devo scomporre la variabile in numeri singoli e ci sono arrivato così:
Ora il problema è che riesco a separare i singoli numeri, solo che così me li scompone partendo dall'ultimo verso il primo...
Un informazione che potrebbe risolvermi il problema sarebbe scoprire da quanti numeri è composta la variabile, e girando in internet ho trovato solo sizeof, ma mi da sempre come risultato 4, e nn mi dice quanti numeri ci sono...
In mente avrei qualche soluzione, ma è brutta da scrivere..
Qualcuno mi sa dire il modo più veloce per farlo?
Per fare la conversione di formato intero -> ASCII puoi usare la sprintf() (http://www.cplusplus.com/reference/cstdio/sprintf/) o similari
Ad esempio:
int num;
char str[12];
sprintf(str, "%d", num);
Temo che NON vogliano che si usi la sprinft(), vero?
Teoricamente dovrebbe esserci anche itoa(), ma non è standard:
http://www.cplusplus.com/reference/cstdlib/itoa
se sei su Linux, purtroppo, non la troverai!
DanieleC88
07-11-2013, 12:34
Con sprintf hai lo stesso problema di non sapere che dimensioni attribuire all'array. Consiglio anche io di ragionare sui logaritmi... ;)
Ragazzi un altro piccolo problema..
Ora il problema è che riesco a separare i singoli numeri, solo che così me li scompone partendo dall'ultimo verso il primo...
Un informazione che potrebbe risolvermi il problema sarebbe scoprire da quanti numeri è composta la variabile,
Forza, la soluzione è aritmetica e non ti servono funzioni particolari, arrays o logaritmi per arrivarci. Quando ti blocchi, prova a prendere un esempio semplice:
n = 1234
1234: 10 = 123 x 10 + 4
123 : 10 =
Ragazzi un altro piccolo problema..
Ora il problema è che riesco a separare i singoli numeri, solo che così me li scompone partendo dall'ultimo verso il primo...
Un informazione che potrebbe risolvermi il problema sarebbe scoprire da quanti numeri è composta la variabile,
Hai la soluzione sotto il naso e non la vedi, non ti servono funzioni speciali/arrays/logaritmi per arrivarci. Conta quante volte dividi il numero per dieci fino ad ottenere zero e saprai da quante cifre è composto (sistema di numerazione posizionale).
Un altro modo più astratto e interessante di vederla è:
f(n : 10) se n : 10 > 0
f(n) =
n % 10 altrimenti
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.