Summe von Gerade und Ungerade Zifferen in Nummer?



  • Hallo an alle. Ich möchte die Summe von den geraden und ungeraden Ziffern eine Nummer bilden. Ich meine auch fertig zu sein aber gibt mir einen fehler bei reminder1 an:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        // Werte
        int number, sum = 0, reminder, sum1 = 0;
        int reminder1;
        cout << "Enter your number: " << endl;
        cin >> number;
    
        // um von einer Zahl alle Ziffern zu bekommen
        while (number > 0)
        {
            reminder = number % 10;
            number = number / 10;
    
            // Gerade? Mit if
            if (reminder % 2 == 0)
            {
                sum = sum + reminder;
            }
    
            // Ungerade? Mit if
            else if (reminder1 % 2 != 0)
            {
                sum1 = sum1 + reminder1;
            }
    
            else
                cout << "Error";
        }
    
        cout << "Sum of even digits is: " << sum << endl;
        cout << "sum of odd digits is: " << sum1;
        return 0;
    }


  • Es scheint ich habs gelöst und ich fühle mich gerade dumm es nicht für ne Stunde gemerkt zu haben: hier:

    #include <iostream>
    using namespace std;
    
    int main()
    {
        // Werte
        int number, sum = 0, reminder, sum1 = 0;
        int reminder1;
        cout << "Enter your number: " << endl;
        cin >> number;
    
        // um von einer Zahl alle Ziffern zu bekommen
        while (number > 0)
        {
            reminder = number % 10;
            reminder1 = number % 10;
            number = number / 10;
    
            // Gerade? Mit if
            if (reminder % 2 == 0)
            {
                sum = sum + reminder;
            }
    
            // Ungerade? Mit if
            else if (reminder1 % 2 != 0)
            {
                sum1 = sum1 + reminder1;
            }
    
            else
                cout << "Error";
        }
    
        cout << "Sum of even digits is: " << sum << endl;
        cout << "sum of odd digits is: " << sum1;
        return 0;
    }


  • @PeterKat reminder1 brauchst du nicht, da es denselben Wert wie reminder enthält.

    Und wann soll der Fehlerfall eintreten?
    Die Zahl ist gerade oder nicht (dann ist sie ungerade).

    Aber das wird nicht gebraucht, wenn man den „kleinen Gauss“ benutzt: https://de.wikipedia.org/wiki/Gaußsche_Summenformel?wprov=sfti1



  • @PeterKat sagte in Summe von Gerade und Ungerade Zifferen in Nummer?:

    while (number > 0)
    {
        reminder = number % 10;
        number = number / 10;
    
        // Gerade? Mit if
        if (reminder % 2 == 0)
            sum = sum + reminder;
        else
        // nicht gerade, also wohl ungerade, was sonst?
            sum1 = sum1 + reminder;
    }
    


  • Die Variable(n) sollte(n) remainder heißen und nicht reminder, remind = erinnern, remain = übrig bleiben.


Anmelden zum Antworten