Dezimalzahl in mehrere Arrays aufteilen

Gast #2023288
Lesenswert?

Hallo,
habe eine 6 Stellige Zahl und möchte diese je auf 3 Felder aufteilen. 
Wie mache ich das?

zum Beispiel:
123456

array[0] = 12;
array[1] = 34;
array[2] = 56;

Die Zahl kann halt immer anders sein, man muss wohl rotieren oder es mit 
einem pointer machen, hat jemand mal ein Beispiel bitte?

Danke schön
Mfg
Moderator (Firma: Titel) Persönliche Seite #2023294
Lesenswert?

Joe schrieb:
> habe eine 6 Stellige Zahl und möchte diese je auf 3 Felder aufteilen.
> Wie mache ich das?
Woher kommt die Zahl?
Steht die in einer Variablen?
Müssen die Einer, Zehner, Hunderter... genau so aufgeteilt sein?
array[0] = 12;   //  *10000
array[1] = 34;   //  *100
array[2] = 56;   //  *1
Was willst du damit machen?

Bist du sicher, dass du weißt, was du willst?
Gast #2023302
Lesenswert?

Lothar Miller schrieb:
> Joe schrieb:
>> habe eine 6 Stellige Zahl und möchte diese je auf 3 Felder aufteilen.
>> Wie mache ich das?
> Woher kommt die Zahl?
Frei erfunden, will wissen wie das geht.
> Steht die in einer Variablen?
Ja
> Müssen die Einer, Zehner, Hunderter... genau so aufgeteilt sein?
Die Aufteilung ist wichtig, MAXIMAL 8 Bit in einem array
> array[0] = 12;   //  *10000
> array[1] = 34;   //  *100
> array[2] = 56;   //  *1
> Was willst du damit machen?
Will wissen wie das geht.
>
> Was willst du damit?
Will wissen wie das geht.
> Bist du sicher, dass du weißt, was du willst?
Ja, will wissen wie das geht.
#2023317
Lesenswert?

Joe schrieb:

> Ja, will wissen wie das geht.


Ganz einfach.

Eine Mutter hat 65 Äpfel und 10 Kinder.
Wenn alle Kinder gleich viele Äpfel bekommen, wieviele Äpfel kriegt dann 
jedes Kind und wieviele bleiben der Mutter übrig?


65 / 10  -> 6  und 5 bleiben Rest

Hmm, 65  zerlegt in 6 und 5, 65 zerlegt in 6 und 5, ....

Division kennst du in C, das ist der / Operator
Und der Rest einer Division, das ist %

   65 / 10   -> 6
   65 % 10   -> 5

Und das kannst du jetzt auf dein Beispiel anwenden.
Moderator (Firma: Titel) Persönliche Seite #2023322
Lesenswert?

Joe schrieb:
> Die Aufteilung ist wichtig, MAXIMAL 8 Bit in einem array
Also, wenn das Byte MAXIMAL ausgenützt werden soll, dann ist deine 
Aufteilung in die Hunderterschritte ungünstig.
Denn dann werden von den 256 möglichen Zuständen (0..255) des Bytes nur 
100 (0..99) verwendet.

Am effektivsten wäre die Aufteilung dann in Bytes:
zahl = 123456;
array[0] = (zahl>>16) & 0xff;
array[1] = (zahl>>8) & 0xff;
array[2] = (zahl) & 0xff;


> Will wissen wie das geht.
Du könntest dir aber trotzdem die Mühe machen, meine Fragen durchzulesen 
und zu überdenken!!! (Ja, drei Ausrufezeichen!)
Gast #2023349
Lesenswert?

SOrry, aber glaub ich habs etwas schlecht erklärt.

Ich will die ersten beiden Stellen in einem Array haben, dann die 3te 
und 4te Stelle in einem weiteren Array und dann die letzten beiden in 
einem weiteren array.

Geht das nicht einer rotation? Teilen ist eigentlich rotieren oder?
#2023383
Lesenswert?

Joe schrieb:

> Geht das nicht einer rotation? Teilen ist eigentlich rotieren oder?

Nein, Teilen ist nicht rotieren.
Teilen ist Teilen.

Wenn du Teilen meinst, dann schreib auch erst mal Teilen.

Es gibt einen berühmten Spruch.
"Premature optimization is the root of all evil"
"Vorzeitige Optimierung ist die Wurzel allen Übels"

Du bist jetzt genau auf dem Trip. Du meinst etwas optimieren zu müssen 
(mittels Rotation), was du noch gar nicht in seiner vollen Tragweite 
verstehst. Sieh erst mal zu, dass dein Programm RICHTIG ist, ehe du dich 
fragst, ob man bestimmte Dinge SCHNELLER machen kann. Ein korrektes 
Programm, welches langsam ist, ist immer noch ein nützliches Programm 
(weil korrekt). Aber ein fehlerhaftes Programm, das sauschnell ist, ist 
zu nichts zu gebrauchen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren