Einfache Schleife (Summe aus 5)



  • Tach Leute!

    Hab eine eigentlich relativ leiche Aufgabe mir Ausgedacht um etwas sicherer mit do/while zu werden! Leider hab ich ein Paar Probleme bekommen!

    Zuerst hab ich das untere Programme aausführen können und es leif das erste mal auch durch aber wenn ich 'Y' drückte zum wiederholen(unabhängig von den 5 Wiederholungen) rasste das Prog wie die Matrix durch, also man sieht nur ganz schnell zahlen vorbeifliegen... Hab schon ein paar leute gefragt aus meinem Umkreis aber die können mir auch nicht weiterhelfen!

    Ich dachte ich habe die do/while Schleifen Falsch gesetzt und habe den Code dann etwas geändert:

    #include <iostream>
    using namespace std;
    
    int main()
    {
    
    char antwort;
    
    do
    {
    
    system ("cls");
    
    int zaehler = 0;
    double summe = 0;
    double eingabe;
    
    	do
    	{
    
    		if(summe <=21)
    		{
    		zaehler=zaehler+1;
    		cout << "Gib deine " << zaehler << "te zahl ein: " ;
    		cin >> eingabe;
    		cout << endl ;
    
    		summe = summe+eingabe;
    		cout << "Die resultierende Zahl addiert mit der zuletzt Eingegebene Zahl lautet: " << summe << endl << endl;
    		}
    
    		else
    		{
    		cout << "Das Endergebniss lautet: " << summe;
    		}
         }
         while(zaehler!=5);
         cout << "Das Endgueltige Ergebniss lautet: " << summe << endl << endl;
    
         cout << "Nochmal von vorne? Dann druecke Y!";
         cin >> antwort;
    }
    if(antwort == 'y');
    {
    while
    }
    else
    {
    cout << " Das Endergbniss lautet " << summe << endl;
    }
    
    system ("Pause");
    return 0;
    
    }
    

    was mir dann aber diese 4 fehler bringt:

    Fehler 1 error C2059: Syntaxfehler: 'if'
    Fehler 2 error C2059: Syntaxfehler: ';'
    Fehler 3 error C2181: Ungültiges 'else' ohne zugehöriges 'if'
    Fehler 4 error C2065: 'summe': nichtdeklarierter Bezeichner

    was ich nicht wirklich nachvollziehen kann! Vorallem Fehler 3 und 4 nicht...
    ich arbeite mit Visual Basic 2008, auf die for Schleife würd ich lieber noch verzichten! Thx im Vorraus!



  • Dein "Matrix-Problem" kannst du beheben, indem du den Eingabepuffer leerst. Nutze die Forensuche, dazu gibts geschätzte 20 Millionen Threads.

    ich arbeite mit Visual Basic 2008

    Sicher? 😃



  • upps ich meine natürlich Visual C++ 🙄

    hatte schon die Forumssuche benutzt aber ich kamm nur zu 17 Ergebnissen für "eingabepuffer leeren" und ich dachte das ich dieses Problem mit

    system("cls")
    

    gelöst hätte da er Anfangs einfach weiterzählte wenn ich ihn zum wiederholen aufforderte!

    Ich hab dann das Ende abgeändert und habe die Fehler auf diesen Teil beschrämken können:

    if(antwort == 'y');
    {
    while
    }
    else
    {
    cout << " Das Endergbniss lautet " << summe << endl;
    }
    

    Denn wenn ich es sonst so mache wie ich es vorher hatte Funktioniert es aber nach dem zweiten mal rattert das Prog nonstop in der Schleife das man nix mehr sieht was natürlich unschön ist 😡



  • Vielleicht solltest du erstmal die Version posten, die "funktioniert" hat, sprich die du kompilieren kannst. Denn was du hier an Code zeigst, ist natürlich Unsinn.

    if(antwort == 'y');
    {
    while
    }
    else
    {
    cout << " Das Endergbniss lautet " << summe << endl;
    }
    

    Das while, dass übrigens zum ersten do gehört, steht hier mitten in einer if-Verzweigung! Was bezweckst du denn damit?? Und was soll das Semikolon hinter der if-Bedingung? Richtig ist da eigentlich nur der else-Zweig...



  • servus,

    ich glaub du solltest dir nochmal den aufbau einer do while schleife anschauen und vlt auch wissen welche sprache du machst.
    Du machst c++ in visual studio und nicht visual basic das ist eine komplett andere sprache 😃

    Hab mal deins verbessert

    #include <iostream>
    using namespace std;
    
    int main()
    {
        char antwort;
        double summe = 0;
    
        do
        {
            system ("cls");
            int zaehler = 0;
            double eingabe;
    
            do
            {
                if(summe <=21)
                {
                    zaehler++;
                    cout << "Gib deine " << zaehler << "te zahl ein: " ;
                    cin >> eingabe;
                    cout << endl ;
    
                    summe = summe+eingabe;
                    cout << "Die resultierende Zahl addiert mit der zuletzt Eingegebene Zahl lautet: " << summe << end
    l << endl;
                }
    
                else
                {
                    cout << "Das Endergebniss lautet: " << summe;
                }
             }
             while(zaehler!=5);
    
             cout << "Das Endgueltige Ergebniss lautet: " << summe << endl << endl;
             cout << "Nochmal von vorne? Dann druecke [yY]! ";
             cin >> antwort;
        }
        while(antwort=='y' || antwort=='Y');
    
        cout << " Das Endergbniss lautet " << summe << endl;
        system ("Pause");
    
        return 0;
    }
    

    so long





  • Das while, dass übrigens zum ersten do gehört, steht hier mitten in einer if-Verzweigung! Was bezweckst du denn damit?? Und was soll das Semikolon hinter der if-Bedingung? Richtig ist da eigentlich nur der else-Zweig...

    Sopbald ich das Semikolon weglasse bekomme ich die Fehlermeldung das ein fehlendes ; vor while steht...

    ich möchte das while ja nur ausführen wenn if erfüllt ist.

    Solange ich die 21 nicht überschreite läuft auch alles sauber und ich kann es durch drücken von Y wiederholen, doch sobald ich die 21 erreiche ghts rund in der Matrix 😃 übrigens auch bei dem was blups0r gepostet hatte. Ging es bei dir denn ohne das es in der Endlosschleife lief?

    Joa das mit dem Einrücken hab ich noch nit ganz gecheckt ich versoche immer so Code päckchen zu machen, habs aber begriffen jetzt hoffe ich! Das mit VB wwar natürlich nur ne Verwechslung ich meine natürlich MS VS C++



  • du kannst die das if in die schleife packen und darein ein 'break', das die do-while-schleife verlässt



  • so habs in meinem code gefixxt

    .
                .
                .
    
                else
                {
                    cout << "Das Endergebniss lautet: " << summe;
                    break;
                }
                .
                .
                .
                .
                .
             cout << "Das Endgueltige Ergebniss lautet: " << summe << endl << endl;
             cout << "Nochmal von vorne? Dann druecke " << endl;
             cin >> antwort;
             summe=0;
                .
    

Anmelden zum Antworten