Amelie schrieb:
So hier die eine Sache: Sekunden, Zählt in Worten bis zwanzig, dann dann springt es um auf dreißig usw.
Wie hänge ich denn nun die "einer-Stellen" dadran? Oder ist diese Vorgehensweise falsch?
Das Vorgehen ist nicht falsch. generell ist es nie falsch, wenn man es so machen möchte (und ja, das ist hier auch ein beliebtes Vorgehen bei solchen Dingen).
Ich denke, du brauchst vor allem nochmal einen Groschen, der beim Grundgedanken fallen müsste:
Wenn du eine Zahl hast, die definitiv kleiner ist als 10 -> weißt du, es handelt sich hier um "Einer". Das kann man getrost so stehen lassen.
Ist die Zahl jedoch größer oder gleich 10, musst du mit "Zehnern" und "Einern" arbeiten.
Jetzt nutzen wir das Wissen, dass eine zweistellige Zahl - zB. 24 - aus dem Zehner-Wert 20 und dem Einer-Wert 4 besteht. Er lässt sich also darauf aufteilen.
Wenn wir nun den Wert 24 nehmen und einfach mal durch 10 teilen und als Ganzzahl speichern, wirst du hierin nur die 2 finden. Kommastellen werden dann abgeschnitten. Dann kannst du dieses zum Beispiel sehr gut dafür nutzen, um auf das entsprechende Zehner-Array zu verweisen.
Und auch die Einerstelle kann man sehr schön ermitteln. Hierfür gibt es die Modulo-Operation oder zu Deutsch: Restwert-Teilung. Als Beispiel sei hier gegeben: 22 / 7 = 3,1428.... (usw). Man kann es auch in Brüchen ausdrücken. Also wären das 3 Ganze und 1/7. Oder wie man in der Schule häufig gelernt hat: 22/7 = 3 Rest 1.
Nehmen wir nun an, du möchtest die "Einer" ermitteln, dann kannst du das ganze mittels der Rest-Wert-Teilung machen (Modulo). Hierbei müssen wir jedoch berücksichtigen, dass wir zur Basis 10 rechnen (weil es ja zehn Einer sind für einen Zehner) und auch, dass lediglich der Restwert zurückgegeben wird, nicht aber die Ganzzahl, die rauskommt..
Teilen wir also 24 durch 10 mittels Modulo, so sollten 4 übrig bleiben:
Das Schöne an diesem Verfahren ist auch, dass man die Arrays genau so nutzen kann, wie du sie vorbereitet hast.
Lediglich die Sonderfälle - wie du bereits erkannt hast - müssen hier rausgenommen werden und dürfen so nicht zurückgegeben werden. Aber alle anderen können über genau die Rechenweise ermittelt und aneinandergefügt werden.
Und das wiederum kann man mittels einfacher Wenn-Dann-Logik machen.
Ich denke, dein Vorhaben scheiterte nicht am Vorhaben selbst, sondern weil du dich mit diesen ganzen If-Else-Statements und auch den Bedingungen verhaspelt hast.
Ich denke, das wichtigste hierbei ist, dass man erstmal verstehen muss, dass die Zahlen zusammengesetzt werden aus "Einern" und "Zehnern" und man dieses Verhalten 1-zu-1 in das Programm übernehmen kann.
Und manchmal hilft auch ein Fingerzeig auf Funktionen, die bereits vorhanden sind
Falls hierüber noch Verständnisfragen da sind, einfach melden
Gruß Pascal