Code::Blocks - Zahl in umgekehrter Reihenfolge?

jo135  06.11.2023, 08:02

Um welche Sprache geht es? C oder C++ oder gar Fortran?

2 Antworten

Mit % 10 bekommst du die hinterste Ziffer einer Zahl, mit /10 kannst sie anschließend wegschneiden.

Ich denke so sollte es also funktionieren:

int input = 12345;
int output = 0;
while(input > 0) { 
  output *= 10; // Bisherige Ziffern um 1 nach links verschieben
  int lastDigit = input % 10; // Hinterste Ziffer ermitteln
  input /= 10; // Hinterste Ziffer wegschneiden
  output += lastDigit; // Ziffer anhängen
}

Dank der ausführlichen Beschreibung muss man hier ein bisschen raten, was gemeint ist. Wie liegt die Zahl vor? Als String?

Dann besteht die Aufgabe vor allem darin, ein Array von hinten nach vorne durchzuiterieren. Du legst dir eine Indexvariable an, setzt sie anfangs auf den höchsten Index im String (schau dir dazu die Funktion strlen() an), und zählst sie in der Schleife runter. Die While-Bedingung ist dann, ob der Index noch mindestens 0 ist.

Eine andere Sache wäre es, wenn du den String umdrehen sollst (nicht einfach zeichenweise ausgeben). Das malst du dir am besten auf Papier auf, auch dafür reicht eine einfache Schleife, du musst aber Werte vertauschen.

Man kann die Sache auch "mathematischer" angehen. Wenn du eine Zahl ganzzahlig durch 10 dividierst, ist der Divisionsrest die letzte Stelle. Machst du das wiederholt, säbelst du sozusagen scheibchenweise von rechts die Stellen runter. Die Abbruchbedingung ist dann, ob von der Zahl überhaupt noch etwas übrig ist.