Dezimalzahl in mehrere Arrays aufteilen

Gast #2023288
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
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
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.
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
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
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?
Gast
Hi

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

Aber z.B. eine 123456 sieht in Bits so 11110001001000000 aus. So und 
jetzt rotiere mal.

MfG Spess
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

Eine eigene Frage? Dieser Thread ist über 15 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.