Schleifen funktionieren nicht so wie ich will



  • Ersteinmal Danke für die Antworten.

    Sorry, ich habe im obigen Code die Zeile

    int k;
    

    vergessen.

    Werde ich gleich ausbessern.

    Ich habe jetzt die for-Schleife optimiert... Jetzt kommt wie bei den anderen beiden Schleifen zwar die Frage "Wie oft soll Hallo ausgegeben werden?", aber auch da kann ich jede beliebige Zahl eingeben und "Hallo" wird bloß einmal ausgeführt.

    Was mache ich falsch bzw. welchen Denkfehler habe ich??



  • Das cin steht in der Schleife.

    Also musst du auch entsprechen oft einen Wert eingeben.



  • Ohne Frage ist es sinnvoller den Wert vor der Schleife abzufragen. 😉



  • Nun habe ich die besagte Endlosschleife bei Menüpunkt 2 und 3...



  • Poste vollständigen Code per copy and paste!



  • Kann ich nicht machen, da ich gerade bei einem Freund bin und über seinen PC im Internet bin und der Code auf meinem Netbook ist...



  • Ich habe nochmal über den Code drüber geschaut ... der müsste jetzt soweit passen.

    Ich sehe aber dennoch den Fehler nicht.



  • Liest du auch die Hinweise durch? Alle?

    Es ist allerdings auch blöd den Code auf der ersten Seite zu ändern, ohne es anzukündigen.

    Wie oft gibst du Werte ein?
    Oder anders gefragt:
    Wie oft erscheint das "Wie oft soll Hallo ausgegeben werden?" ?



  • silent_max schrieb:

    [...] müsste jetzt soweit passen.

    Njet. Ich spendier' noch ein Semikolon am Ende von Zeile 45 - dann kompiliert das Ding wenigstens.
    int i im case 1 wird immer noch uninitialisiert verwendet.
    Du scheinst keinen der gemachten Vorschläge bzw. Erleuterungen beachtet zu haben.



  • Es erscheint einmal.



  • Bei welcher Auswahl? 1 für "for-Schleife"? Reiner Zufall.



  • Bei welchen Eingabewerten?



  • Also der gesamte Code sieht jetzt so aus:

    #include <iostream>
    using namespace std;
    
    int main()
    {
     int number;
    
     cout << "Schleifen im Vergleich!" << endl;
     cout << endl;
     cout << "Welche Schleife wollen Sie ausfuehren?" << endl;
     cout << "(1) for - Schleife" << endl;
     cout << "(2) do ... while - Schleife" << endl;
     cout << "(3) while - Schleife" << endl;
     cout << "(0) Abbruch!" << endl;
     cin  >> number;
    
     switch (number)
     {
      case 1:
       int i;
       cout << "Sie haben sich fuer eine for - Schleife entschieden!" << endl;
       cout << "Jetzt wird die for - Schleife ausgefuehrt!" << endl;
       cout << "Wie oft soll Hallo ausgegeben werden?"<< endl;
       cin  >> i;
       for (; i <1000; i++)
       {
        cout << "Hallo";
       }
       break;
      case 2:
       int k;
       cout << "Sie haben sich fuer eine do...while - Schleife entschieden!"<< endl;
       cout << "Jetzt wird die do...while - Schleife ausgefuehrt!" << endl;
       cout << "Abbruchbedingung ist die Ziffer 0" << endl;
       cout << "Wie oft soll Hallo ausgegeben werden?" << endl;
       cin  >> k;
       do
       {
        if (k!=0)
          cout << "Hallo";
        else
          cout << "Abbruch;
       }while(k!=0);
       break;
      case 3:
       int j;
       cout << "Sie haben sich fuer eine while - Schleife entschieden!" << endl;
       cout << "Jetzt wird die while - Schleife ausgefuehrt!" << endl;
       cout << "Abbruchbedingung ist die Ziffer 0!" << endl;
       cout << "Wie oft soll Hallo ausgegeben werden?" << endl;
       cin  >> j;
    
       while(j!=0)
       {
        if(j!=0)
         cout << "Hallo" << endl;
        else 
         cout << "Abbruch!" << endl;
       }    
       break;
      case 0:
       cout << "Abbruch!" << endl;
       break;
      } 
     return 0;
    }
    

    Bei Menüauswahl 1 werde ich zwar gefragt, wie oft "Hallo" ausgegeben werden soll, aber die Schleife läuft wohl bis 1000 durch.

    Bei Menüauswahl 2 werde ich zwar gefragt, wie oft "Hallo" ausgegeben werden soll, aber es erscheint eine Endlosschleife, wie SeppJ schon geschrieben hat.

    Bei Menüauswahl 3 werde ich zwar gefragt, wie oft "Hallo" ausgegeben werden soll, aber es erscheint eine Endlosschleife, wie SeppJ schon geschrieben hat.

    Bloß wo liegt der Fehler???????????????????????



  • silent_max schrieb:

    Also der gesamte Code sieht jetzt so aus: [...]

    Glaube ich nicht.

    1>main.cpp(28): error C2143: syntax error : missing ';' before '}'
    1>main.cpp(42): error C2001: newline in constant
    1>main.cpp(43): error C2143: syntax error : missing ';' before '}'
    


  • Bei 1. fängst du bei i an zu zählen. Wenn du für i mal 998 eingibst, kommen weniger Ausgaben.

    Zu 2. und 3.
    Wenn du zählen willst, musst du einen Wert auch mal verändern.



  • Habe es ausgebessert!!



  • mhm.

    1>main.cpp(42): error C2001: newline in constant
    1>main.cpp(43): error C2143: syntax error : missing ';' before '}'
    

    Hast Du keinen Compiler!?


Anmelden zum Antworten