#include 
#include 
#include 
#include 
#include 

using namespace std;

// Headers
string toString (double);
int toInt (string);
double toDouble (string);

int main() {

    // Für die Zahl, von der die Quersumme berechnet, werden soll, wird die Variable zahl deklariert.
    int zahl;
    
    // Für das Ergebnis und Zwischenwerte der Quersumme wird die Variable quersumme deklariert.
    int quersumme;
    
    // Die Variable r ist eine Hilfsvariable, die dazu dient, die einzelnen Ziffern der mehrstelligen Zahl zwischenzuspeichern.
    int r;
    
    // Eine Zahl, die kleiner als 10 ist, entspricht bereits ihrer Quersumme. Zum Beispiel die Zahl 5 hat die Quersumme 5. Daher wird hier nach einer Zahl gefragt, die größer als 10 ist.
    cout << "Geben Sie ein Zahl, die größer als 10 ist, ein: " << endl;
    cin >> zahl;
    
    // Es ist auch möglich, Quersummen von negativen Zahlen zu berechnen.  Dazu wird hier die boolesche Variable negativ deklariert und mit dem Wert false initialisiert.
    bool negativ;
    
    negativ = false;
    
    // In der Fallunterscheidung wird geprüft, ob die eingegebene Zahl kleiner als 0 ist, falls ja, wird der Wert der Variable negativ auf true gesetzt und die eingegebene Zahl mit -1 multipliziert. Die Zahl ist dann positiv, nach der Berechnung der Quersumme wird das Ergebnis später wieder mit -1 multipliziert.
    if (zahl < 0) {
        negativ = true;
        zahl = (int) (zahl * -1);
    }
    if (zahl > 10) {
        quersumme = 0;
        while (zahl > 0) {
            
            // Mithilfe der Modulo Funktion (MOD) kann die letzte Stelle der Zahl abgeschnitten werden.
            r = zahl % 10;
            
            // Die Zahl wird jetzt durch 10 geteilt.
            zahl = (int) ((double) zahl / 10);
            quersumme = quersumme + r;
        }
    } else {
        
        // Wenn die Zahl kleiner als 10 ist, entspricht die Zahl der Quersumme. Daher ist keine weitere  Rechnung nötig.
        quersumme = zahl;
    }
    cout << "Die Quersumme der gebenen Zahl ist: " << endl;
    
    // Hier wird geprüft, ob die ursprünglich Zahl negativ war, falls ja, wird die berechnete Quersumme mit -1 multipliziert.
    if (negativ) {
        quersumme = (int) (quersumme * -1);
    }
    cout << quersumme << endl;
    return 0;
}

// Im Folgenden werden Funktionen zur Typumwandlung implementiert.
string toString (double value) { //int auch
    stringstream temp;
    temp << value;
    return temp.str();
}

int toInt (string text) {
    return atoi(text.c_str());
}

double toDouble (string text) {
    return atof(text.c_str());
}
        
        
akzeptieren ablehen

Diese Website verwendet Cookies und Zählpixel, um Ihnen die bestmögliche Nutzung dieser Website zu ermöglichen.Learn more about cookies sehen Sie auch Datenschutz