integer in ein array

wacken
hi,


ich habe folgendes Problem. Ich habe ein langes int und möchte das dezimal-stelle für dezimal stelle in ein array packen.

hat da jemand nen vorschlag ?
zineus
kannst du deine frage auch etwas verständlicher formulieren. Ihc versteh nicht genau was du willst
Ich versuchs zu interpretieren was du da geschrieben hast.

du hast eine große zahl und willst die ziffern in ein array packen?

z.B long int 1576 -> a_zahl [1][5][7][6]

hab ich es so richtig verstanden?
DfAce
also es gibt da auf die schnell 2 Möglichkeiten die mir einfallen:

(1) über integers abschneiden (wenn du teilst, wird der Rest abgeschnitten) oder
(2) in einen string einlesen und dann per index auslesen.

Hier der Quellcode:

(1)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
int main(int argc, char* argv[])
{
        using namespace std;

        int zahl = 23523523,
            merk = zahl,
            zehnerpotenz,
            i = 0;
        int array[20];          //gegebenenfalls dynamische Arrays

        for(int j = 0; j < 20; j++)
          array[j] = -1;

        do
        {
          zehnerpotenz = 1;
          merk = zahl;
          do {
            merk = merk / 10;
            zehnerpotenz = zehnerpotenz * 10;
          }while (merk > 10);

          array[i] = merk;
          i++;
          zahl = zahl - merk*zehnerpotenz;
        }while (zahl > 10);
        array[i] = zahl;

        for(int j = 0; j < 20; j++)
          if (array[j] != -1)
            cout << array[j] << endl;

        return 0;
}


(2)
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
int main(int argc, char* argv[])  
{          
  using namespace std;           
  
  int zahl = 23523523;          
  AnsiString string;            

  string = IntToStr(zahl);            

  for (int i = 1; i <= string.Length(); i++)            
    cout << string[i] << endl;            

  return 0;  
}
Hanfling
Groar!

Wie wäre es mit sprintf() ?
dann jedes Array Element - '0'

/edit:
Mit Methode (2) kriegst du nur den Ascii Wert und ist etwas aufgebläht von der Laufzeit.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
// typen stuff
int val = 234534;
char buf[256]; int tar[256];

// sollte funktionieren
for (int i = sprintf(buf, "%i", val) - 1; i > -1 ; tar[i] = buf[i] - '0', --i);


falls nicht eben Arraygrenzen überdenken/anpassen...

/edit 2 (oso):
Arraygrößen kannst du dir aus den numerirc_limits<int> und log10 herleiten...