Addition von Zahlen?



  • Wie kann ich zu einer vierstelligen ganzen Zahl x die Zahl xreverse dazu addiert , die sich ergibt, wenn man die Ziffern von x in umgekehrter Reihenfolge aufschreibt?
    Bsp: Zahl 1234 ergäbe umgekehrt den Wert 4321 und die Summe wäre 55555

    MfG Chris!



  • Also, x hast Du und das addieren von xreverse fällt Dir sicher auch nicht schwer, wenn Du's denn mal hast.
    Also liegt die Schwierigkeit wohl beim bestimmen von xreverse.

    Der Trick hierbei ist eigentlich die Ziffern sozusagen zu bestimmen und dann in umgekehrter Reihenfolge wieder zusammenzusetzen.

    Wie kriegen wir die letzte Ziffer von x?
    Das ist x%10, der Rest bei der Division von x/10.
    Die 2.letzte kriegt man mit (x/10)%10. Also erstmal mit /10 die letzte Ziffer vergessen und dann den Rest bestimmen und so immer weiter.

    Und aus diesen Ziffern wollen wir jetzt xreverse wieder zusammen setzen.
    Angenommen wir haben 123 das liefert uns dann die Ziffern 3,2,1 und dann rechnen wir:

    3*102+2*101 + 1 = (3*10+2)*10+1 = 321. Der letztere Term ist für eine effiziente Berechnung besser geeignet.

    Insgesamt kriegen wir als Lösung

    int reverse(unsigned int x)
    {
      int res=0;
      while(x>0)
      {
        res*=10; // alle Ziffern im Ergebnis eins nach links schieben
        res+=x%10; // letzte Ziffer anhängen
        x/=10; // letzte Ziffer von x vergessen
      }
      return res;
    }
    

    MfG Jester

    <hume sagt>Code-Tags repariert</hume sagt>



  • Danke für deine schnelle Antwort!
    Und wie müsste man das Programm umändern das die Zahl x mittels scanf("%d", &x) und anschließender Ausgabe von x+xreverse läuft?

    Mfg Chris!



  • Das da oben ist eine Funktion, die kannst Du einfach aufrufen.

    Ein/Ausgabe sollte man in C++ besser mit Streams machen.
    Benutz mal die Suchfunktion und stöber etwas in der FAQ, da solltest Du einiges finden.

    MfG Jester


Anmelden zum Antworten