Ergebnis 1 bis 4 von 4
  1. #1
    Fortgeschrittener
    Registriert seit
    24.09.2008
    Beiträge
    44

    Standard Verstehe die While Anweisung nicht , oder doch? ...

    Es geht um folgenden Code:

    Code:
    #include <iostream>
    int main()
    {
        int sum = 0, val= 1;
        while (val <= 10) {
            sum += val;
            ++val;
        }
        std::cout << "Sum of 1 to 10 inclusive is "
                  << sum << std::endl;
        return 0;
    }
    Kann mir jemand erklären ( verständlich bitte.. ) wie "sum" hier einen Wert von 55 erhält ?
    sum hat den Wert 0, val den Wert 1.
    Jetzt wird doch so oft sum + val gerechnet bis val den Wert 10 hat oder nicht?

    Also sieht die Schleife eigentlich so aus :

    0+1 = 1
    1+1 = 2
    2+1 = 3
    3+1 = 4
    4+1 = 5
    5+1 = 6
    6+1 = 7
    7+1 = 8
    8+1 = 9
    9+1 = 10

    Gut zusammen gerechnet ergibt das 55.
    Sehe ich das richtig das die einzelnen Ergebnisse also immer zwischendurch im int sum zwischengespeichert werden?
    Und das nach jeder Schleife, warum?
    Ich versteh die Logik nicht weil ja bei jeder Schleife int sum wieder 0 sein müsste und nicht den Wert des vorrigen schleifendurchlaufes.

    Ich bitte um Aufklärung

    Gruß

  2. #2
    Kuschel-Wuschel enco Avatar von enco
    Registriert seit
    26.01.2006
    Beiträge
    1.075

    Standard

    Nein, du erhöst val bei jedem Durchlauf um 1, also sieht die Rechnugn so aus:
    0 + 1 = 1
    1 + 2 = 3
    3 + 3 = 6
    6 + 4 = 10
    10+ 5 = 15
    ...
    etc

    Schreib in der Schleife einfach sum += 1, das ist wohl das was du wolltest.

  3. #3
    CIH-Virus Avatar von -[RiDER]-
    Registriert seit
    05.01.2007
    Beiträge
    496

    Standard

    Zitat Zitat von ReED
    Schreib in der Schleife einfach sum += 1, das ist wohl das was du wolltest.
    Oder sum++.

    Aber das, was das Programm jetzt tut, ist auch das, was die Ausgabe des Programms angibt: "Sum of 1 to 10 inclusive"

    Zitat Zitat von dehctiw
    Sehe ich das richtig das die einzelnen Ergebnisse also immer zwischendurch im int sum zwischengespeichert werden?
    Ja.
    Zitat Zitat von dehctiw
    Und das nach jeder Schleife, warum?
    Weil Du es so definiert hast.
    sum += val ist eine Kurzschreibweise (unter Anwendung eines binären Zuweisungsoperators) von sum = sum + val, also "addiere den Wert von val zum Wert von sum hinzu und speichere diesen neuen Wert wieder in sum".
    Zitat Zitat von dehctiw
    Ich versteh die Logik nicht weil ja bei jeder Schleife int sum wieder 0 sein müsste und nicht den Wert des vorrigen schleifendurchlaufes.
    Nein, sum wird vor dem ersten Schleifendurchlauf einmalig der Wert 0 zugewiesen, dann während jedem Schleifendurchlauf der (sich ändernde) Wert von val hinzuaddiert.

    Voilà tout.

    GreetZ RiDER

  4. #4
    Fortgeschrittener
    Registriert seit
    24.09.2008
    Beiträge
    44

    Standard

    Super Vielen Dank!

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •