View Full Version : [C++] - posizionare le cifre di un intero in un array
RagingBull
05-06-2008, 15:28
ciao a tutti,
mi sto avvicinando al c++ e volevo sapere come è possibile trasformare un dato di tipo integer in un array. ad esempio:
int cifra;
int arr[3];
cifra=123;
dopo la conversione dovrei ottenere come risultato:
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
grazie anticipatamente per l'aiuto!
RagingBull
05-06-2008, 15:55
uhm....quindi esempio pratico col mio 123 verrebbe:
123/100=1
(123-(123/100)*100)/10=2
(123-(123/10)*100)/10=3
di volta in volta poi le prendo e le metto nell'array...quando si dice la soluzione più semplice e non ci si arriva :muro:
ti ringrazio! :)
Io passerei dalla rappresentazione in stringa ottenuta con la funzione
itoa
che mi sembra piu' esente da errori che moduli divisioni etc.
RagingBull
05-06-2008, 17:34
si, in effetti "giocando" con le operazioni mi sono reso conto che i controlli da fare sono parecchi.
esattamente qual'è la sintassi per la funzione itoa? molto probabilmente vado a risparmiare parecchie righe di codice.
Le sintassi delle funzioni le trovi anche con google...
Comunque la itoa non e' standard. Anche se ce l'hanno tutti i compilatori che ho incontrato.
Al limite, dato che usi proprio la base 10, andrebbe altrettanto bene sprintf
itoa(valore,stringa,base)
char stringa[8]; // stringa destinazione. E' lunga abbastanza?
// Per gli interi senza segno 8 basta
//Qui ti ritrovi la stringa riempita.
itoa(valore,stringa,10);
int risultato[8];
for (int t=0;t<8;t++)
{
char carattere=stringa[t];
if (carattere==0) break;
// Per passare da un carattere che contiene un numero
// alla sua rappresentazione decimale
// e' sufficiente sottrarre '0'.
risultato[t]=(int)(carattere - '0');
}
Giusto come paragone in C# (ma anche in Python non e' tanto diverso), la stessa cosa diventa cosi'
int valore = 5885;
var risultato = valore.ToString().ToCharArray().Select(u => u-'0');
RagingBull
05-06-2008, 18:00
perfetto, la provo subito!
grazie ancora!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.