PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zahlenfolge verkehrt ausgeben (C++)



Laserstrahl
19.10.2004, 15:25
Ich als Programmieranfänger hätte keine Idee wie ich eine Zahlenfolge verkehrt ausgeben kann. z.B. Eingabe: 542 Ausgabe: 245
Der Tutor hat mir einen Tipp gegeben, das geht irgendwie mit modulo (%).
Ich weiss auch was mod ist, es ist einfach der Rest einer Division.
Bin schon Stundenlang daran gesessen und habe immer noch keine Idee. :(

Kann mir jemand noch einen Tipp oder Denkanstoss geben, wie ich das lösen kann?
Hat das auch irgendwas mit der höheren Mathematik zu tun?

tes
19.10.2004, 16:49
hi Laserstrahl,

mit der fuktion strlen() kannst du die laenge des eingabestrings herausfinden.
mit dieser information koenntest du dann in einer zaehlschleife rueckwaerts, jedes zeichen, von hinten anfangend, ausgeben.

und was man da mit modulo machen koennt ...?
ka, was ihm da als loesung vorschwebt.

oben beschriebene vorgehensart, ist gaengig in der stringverarbeitung.
laenge ermitteln und mit index auf gewuenschte zeichen zugreifen.

gruss tes

Laserstrahl
19.10.2004, 17:54
Das Problem ist wir sind mit den Vorlesungseinheiten stoffmäßig noch nicht so weit.
Wir haben bis jetzt erst babybeispiele (z.B. Fläche eines Kreises) Variablen, Datentypen, Ausdrücke, Typconversionen (cast) durchgenommen und sonst nichts. keine Schleifen, keine Arrays...

StrgAltEntf
19.10.2004, 18:34
Zahlenfolge oder mehrstellige Zahl? Ich nehme mal an letzteres ;)

Der Tipp mit modulo ist nicht schlecht: 542 mod 100 gibt 42, 542 mod 10 (oder auch 42 mod 10) gibt 2 (analog mit anderen Zehnerpotenzen). Die Ganzzahldivision ohne Rest (542/100=5) kannst du vielleicht auch noch gebrauchen.
Wenn man geschickt damit umgeht, kann man das gut zum Zahlenzerlegen benutzen (umgekehrt wieder zusammensetzen geht dann analog (bzw. invers) *buck*).
Ich hoffe der Tipp hilft dir weiter ;)

Laserstrahl
19.10.2004, 20:44
Original geschrieben von StrgAltEntf
Zahlenfolge oder mehrstellige Zahl? Ich nehme mal an letzteres ;)

Der Tipp mit modulo ist nicht schlecht: 542 mod 100 gibt 42, 542 mod 10 (oder auch 42 mod 10) gibt 2 (analog mit anderen Zehnerpotenzen). Die Ganzzahldivision ohne Rest (542/100=5) kannst du vielleicht auch noch gebrauchen.
Wenn man geschickt damit umgeht, kann man das gut zum Zahlenzerlegen benutzen (umgekehrt wieder zusammensetzen geht dann analog (bzw. invers) *buck*).
Ich hoffe der Tipp hilft dir weiter ;)

Du bist mein Held, vielen Dank!! :)

Also 542/100 wird bei int genau an der Kommastelle weggeschnitten, da hab ich also die 1. Stelle.
542 mod 100 => 42 mod 10 ergibt die 3. Stelle

542/10 => 54 mod 10: die 2. Stelle.

StrgAltEntf
19.10.2004, 22:01
Genau, damit das mit beliebig großen Zahlen funktioniert, muss man das aber noch geschickt systematisieren und in eine Schleife oder Rekursion (in dem Fall vermutlich einfacher als ne Schleife - wenn man's kann) verpacken und auch passend wieder per Multiplikation und Addition zusammensetzen (falls das gewollt ist). Aber ihr hattet ja offenbar noch keine Schleifen... *noahnung*

tes
19.10.2004, 22:23
nich schlecht, ich hab schon gegruebelt ueber die 2te stelle. :)

gruss tes

Laserstrahl
19.10.2004, 23:10
Original geschrieben von StrgAltEntf
Genau, damit das mit beliebig großen Zahlen funktioniert, muss man das aber noch geschickt systematisieren und in eine Schleife oder Rekursion (in dem Fall vermutlich einfacher als ne Schleife - wenn man's kann) verpacken und auch passend wieder per Multiplikation und Addition zusammensetzen (falls das gewollt ist). Aber ihr hattet ja offenbar noch keine Schleifen... *noahnung* Sorry hab die Angabe nicht genau angegeben.
Man braucht nur 3 stellige Zahlen einzugeben.