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
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?
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.
123456 durch 10000 teilen und Stellen nach dem Komma streichen = array[0] 123456 modulo 10000 = 3456 (Rest für 1+2) 3456 durch 100 teilen und Stellen nach dem Komma streichen = array[1] 3456 modulo 100 = 56 = array[2]
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.
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!)
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?
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
Liest du auch die Antworten und versuchst diese auch zu verstehen? Rechne doch mal mein Beispiel nach. (Windows Taschenrechner auf Wissenschaftlich stellen)
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.