|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
[C++] - posizionare le cifre di un intero in un array
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! |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
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 ti ringrazio! |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
Io passerei dalla rappresentazione in stringa ottenuta con la funzione
itoa che mi sembra piu' esente da errori che moduli divisioni etc.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. |
|
|
|
|
|
#4 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
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. |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
|
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) Codice:
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' Codice:
int valore = 5885;
var risultato = valore.ToString().ToCharArray().Select(u => u-'0');
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto. E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test. Ultima modifica di gugoXX : 05-06-2008 alle 18:52. Motivo: C# ext |
|
|
|
|
|
#6 |
|
Member
Iscritto dal: Oct 2006
Città: Bari
Messaggi: 238
|
perfetto, la provo subito!
grazie ancora!!! |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 13:59.



















