Problem mit Programm zur quersumme



  • Hallo, ich fange gerade mit c++ an und habe bei einem meiner ersten programme versucht eines zur berechnung der quersumme zu entwickeln. Da ich nicht so recht weiter kam was eine passende Funktion angeht habe ich im internet gesucht und eine dort genutzte funktion für folgendes programm verwendet:

    #include <iostream>
    #include <vector>
    using namespace std;
    
    int quersumme (int z)          
    {
        int sum = 0;               
        while (z > 0)              
        {
    
            sum = sum + z % 10;       
            z = z / 10;               
        }
        return sum;
    }
    
    int main()
    {
        int z;
        cout << "Hallo, geben Sie eine Zahl ein, um deren Quersumme zu berechnen: ";
        cin >> z;
    
        if (z > 0)
        {
            quersumme(z);
            cout << "Die Quersumme betraegt: " << quersumme(z) << endl;
        }
        else
        {
            cout << "Bitte geben sie eine positive Zahl ein.";
        }
    
        return 0;
    }
    

    Das ganze funktioniert auch ganz einwandfrei, ich habe aber probleme dabei zu verstehen wieso 😃
    sagen wir ich wähle z=13, dann wird über modulo sum=3 und die schleife bildet eine neue ausgangzahl z=z/10, das wäre aber 1,3 und somit keine integer mehr, dann dürfte es doch gar nicht weiter gehen?! es muss aber ja noch einmal 1 zu sum addiert werden um die quersumme 4 zu erhalten. was das programm ja auch macht. ich steh da einfach aufm schlauch^^

    vielen dank schonmal für hilfe 🙂



  • Bei Integerdivision werden in C++ (und C, C#, Java) die Nachkommastellen abgeschnitten, d.h. es gilt z.B. 1 / 3 = 0 oder 3/2 = 1 usw.



  • ah, besten Dank! 🙂

    Dann macht jetzt alles Sinn 😃



  • 2 kleine Dinge zum Code: Binde nur die Header ein, die du wirklich brauchst (vector brauchst du hier nicht). Außerdem ist der erste Aufruf von quersumme im If-Block redundant.



  • Du solltest lernen, mit einem Debugger umzugehen. Damit kannst du den Programmfluss gut nachvollziehen, in diesem Fall insbesondere die Werte der einzelnen Variablen.


Anmelden zum Antworten