for-schleife cpp



  • Aufgabe:
    1 Zaubertrank kostet 5 coins. Du hast 100 coins.
    Wie viele Zaubertränke kannst du kaufen? Antworte mit einer For-Schleife.

    [code="cpp"]

    #include <iostream>

    using namespace std;

    int main()
    {
    int zaubertraenke = 0;
    for (int coins = 100; coins >= 0; (coins = coins -5) && zaubertraenke++)
    {
    cout << "Sie haben noch " << coins << " Coins" << endl;
    cout << "Sie haben " << zaubertraenke << " Zaubertraenke\n" << endl;
    }

    system("pause");
    return 0;
    }

    Mein Problem ist es dass, das Programm aufhört bei 19 zu zählen. Obwohl eigentlich 20 Tränke die richtige Anzahl wäre. 😕 Please HEEEELP



  • Es fängt ja auch bei 0 an zu zählen 😕



  • dann würde ich ja zu anfang 1 gratis zaubergetränk bekommen 😃
    das war nicht der sinn 😳 trotzdem danke 🙂



  • Der macht schon 20 Durchläufe, nur zählt er nicht alle

    Mach dich über die Kurzschlussregel bei logischen Operatoren schlau.
    Wenn das Ergebnis der Operation feststeht, werden die nachfolgenden BEdingungen nicht mehr geprüft.

    (coins = coins -5) && zaubertraenke++
    

    Im letzten Durchlauf ist coins = 0. Damit ist die Klammer 0 und das && ergibt somit falsch.
    Darum braucht zaubertraenke++ nicht mehr ausgewertet werden.

    Schau dir mal den Kommaoperator an.

    Ganz praktisch, wenn mehrere Anweisungen an einer Stelle stehen sollen.



  • Krass dankeschön für diese Hilfreiche und ausführliche Antwort. Programmiere erst seid einer Woche. Bin neu hier im Forum und die Antworten kommen schneller als man gucken kann 👍 👍


Log in to reply