005
22.11.2010, 08:53 Uhr
ao
(Operator)
|
Zitat: |
ansonsten, könntest du die jeweiligen stellen der zahl über binäres und ( & ) "herausziehen", und dann mit binärem oder ( | ) wieder hinzufügen,
|
... aber nur im Dualsystem. Es geht doch um die Stellen im Zehnersystem, also zum Beispiel die Zahl 487 zerlegen in 4 | 8 | 7, um dann die einzelnen Ziffern irgendwie zu verändern, oder?
Zitat: |
Wenn ich es im Array speicher, kann man es dann mit atoi(...) rausholen, oder ist das was anderes?
|
Das ist was anderes. Das macht dir aus einer String-Darstellung (z.B. "1583") den numerischen Wert 1583. Der Name atoi (array to integer) kommt daher, dass eine Zeichenkette in C als Array von Zeichen gespeichert wird.
atoi gibt keinen Zugriff auf die einzelnen Ziffern.
Leute, ihr habt recht, man kann die Aufgabe auf viele Arten lösen, aber manche davon sind echte Krücken mit lästigen Nebenwirkungen. Man kommt nur dann zu sauberen und verständlichen Lösungen, wenn man passende Datentypen wählt, und der passende Datentyp für dieses Problem ist meiner Meinung nach ein Array von integer (*), in dem jedes Element eine Ziffer enthält (wie oben beschrieben).
Vor allem dann, wenn als nächstes die Aufgabe kommt, zwei solcher Zahlen zu addieren.
(*) ob signed oder unsigned int, das hängt davon ab, wie man negative Zahlen darstellen will. Hab ich noch nicht drüber nachgedacht, aber spätestens dann, wenn man Rechenoperationen definiert, muss man das tun. Dieser Post wurde am 22.11.2010 um 08:54 Uhr von ao editiert. |