Erklärung zur Quersummenberechnung



  • Hallo Leute,

    ich erbitte um etwas Hilfe. Und zwar stieß ich im Buch "Der C++ Programmierer" von U. Breymann auf eine Übung, die mitunter die Berechnung des Querschnitts fordert.

    Mir geht es hauptsächlich um folgenden Codeabschnitt:

    while (z > 0) {
        quersumme += z % 10;
        z /= 10;
      }
    

    Ich frage mich, wie ich ohne zu spickeln darauf kommen soll.
    Vorallem fällt es mir schwer nachzuvollziehen, wie sich diese Schleife und die darin befindende Anweisungen auf eine natürliche Zahl auswirkt.
    Gehe ich davon aus, dass z ein Integer ist, würde ja bei der Berechnung durch "z /= 10" die Kommastellen abgeschnitten werden.
    Vielleicht hänge ich auch nur, und komme auf keinen Lösungsansatz.
    Ich hatte Schwierigkeiten mit meinen Anfängerkenntnissen, zu einer Lösung der Aufgabenstellung zu gelangen.
    Vielleicht kann mir jemand das erklären.
    Btw habe ich schon im Internet danach gesucht, doch nur diesen Lösungsweg in C++ und in C (was ähnlich ist) gefunden. Aber bisher keine Erläuterung.

    Danke 🙂 der Roflnatz0r



  • Naja die Quersumme einer natürlichen Zahl > 0 berechnet sich aus der letzten Ziffer + der Quersumme um die gekürtzte Zahl.

    Bei einer Eingabe von z.B z == 423 ermittelst du mit z %= 10 die 3 und addierst sie auf die Quersumme. Danach wird die 3 mit z/= 10 abgetrennt.
    Auf die 42 wird das Verfahren so lange wiederholt bis z 0 wird.



  • Gut, das habe ich nun verstanden.
    Mir eröffnet sich bisweilen noch nicht, wie man auf sowas kommen soll.
    Es kommt mir so vor, dass man erstmal ausreichend Code-Schnipsel gesehen haben muss, um sich später daran erinnern zu können und in sein Programm einbetten.
    Doch ohne Studium oder Fachmann, der einem hilft, sitz ich oftmals einfallslos vor einer Aufgabe.
    Bei manchen Aufgabenstellungen sehe ich kein Problem. Ich will ja nicht einfach "abschreiben" lernen bzw. copy+paste benutzen, sondern auch verstehen und begreifen, wie man auf einen Lösungsweg kommt. bzw. versteht, wie es funktioniert.
    Habt Ihr da einen Tipp für mich ?



  • Im Internet findet man viele Rezensionen zu diesem Buch, welche suggerieren, dass das Buch nicht gut für C++ Einsteiger geeignet ist.
    Der liebe Herr Breymann stellt nun mal Übungsaufgaben mit etwas höheren Ansprüchen. Ich persönlich löse solche Aufgaben wesentlich lieber als diese "Geben Sie die Zahlen von 1 bis 10 auf der Konsole aus"- Aufgaben.

    Eben genau das ist eigentlich die "Kunst" beim Programmieren. Eine Lösung zu einer bestimmten Prolemstellung zu finden und sich selbst Gedanken darüber zu machen. Dafür gibt es kein allgemeines Rezept.

    Du kannst dir ggf. ein Buch über Algorithmen anlegen, in wie fern das Sinn macht kann ich dir nicht sagen, denn die Aufgaben in deinem Buch werden früher oder später sowieso nicht mehr so mathematisch ausfallen 🙂



  • Ich bin sehr angetan von diesem Buch. Bisweilen habe ich schon ein paar geeignete Bücher für Programmiereinsteiger in meinem Besitz. Komme aber mitunter am Besten damit klar. Der Reiz solche Aufgaben zu lösen ist hoch und ich finde es auch praktisch, in verschiedenen Büchern die unterschiedlichen Aufgaben zu bewältigen oder mit vielen Fragenzeichen überm Kopf zu verzweifeln. 😃


Anmelden zum Antworten