funktion per schleife unendlich wiederholen



  • int i = 6;
        cout<<"Hallo.... dies ist der Rechner von Dominik Schidlowski\n\n"<<endl;
        while(i == 5)
        {
            i = i + 1;
            menu();
            if(menupunkt == 1)
                {rechnen();}
        };
    

    damit will ich, dass das alles durchlaufen wird und dann wieder zu menu() gesprungen wird.

    aber statt dies zu machen öffnet und schließt sich das programm seeehr schnell.



  • Beachte die Schleifenbedingung. 💡



  • ? also des soll ja durchlaufen werden bis i 5 ist aber von 6 fängt es an hochzuzählen also wird des nie 5 oder?



  • oke hab nochmal gegoogelt und gefunden dass es so geht.

    int i, x = 55;

    for(i = 100; i > -x; i--)

    kann mir einer sagen wiso?



  • bammes schrieb:

    ? also des soll ja durchlaufen werden bis i 5 ist aber von 6 fängt es an hochzuzählen also wird des nie 5 oder?

    while(i == 5)

    heißt aber: Solange i den Wert 5 hat.

    Den hat es in Deinem Codeschnipsel aber schon zu Beginn gar nicht, weil i mit 6 initialisiert wird.

    Möglich wäre:
    int i = 0;
    while(i != 5) //solange i ungleich 5 ist

    oder, normalerweise besser:
    int i = 0;
    while(i < 5) //solange i kleiner als 5 ist

    Wenn die Schleife tatsächlich unendlich laufen soll, genügt:
    while(1)



  • Belli schrieb:

    Möglich wäre:
    int i = 0;
    while(i != 5) //solange i ungleich 5 ist

    oder, normalerweise besser:
    int i = 0;
    while(i < 5) //solange i kleiner als 5 ist

    Eher nicht. Der Zug geht in Richtung != statt <.

    Belli schrieb:

    Wenn die Schleife tatsächlich unendlich laufen soll, genügt:
    while(1)

    Oder in C++ üblicher

    for(;;)
    


  • oke thx ich nehme das mit for(;;) find ich einfacher zu merken ^:-) 👍



  • Ich schreibe es einfach mal in diesen Theard...

    Kleines Problem mit while-Schlaufen. Wenn ich bei cin etwas eingebe, führt es pro Wort das cout aus. Es soll aber pro Eingabe genau Einmal cout ausführen.

    while (i > 1) {
    	cin >> txt;
    	cout << ueberpruef() << endl;
    
    	i=i+1;
    };
    

    Danke im voraus 🙂



  • das liegt daran, dass der operator<< beim ersten whitespace-zeichen(leerzeichen, tab, zeilenumbruch) aufhört zu lesen.
    üblicherweise nutzt man für so etwas std::getline :

    #include <iostream>
    #include <string>
    
    int main()
    {
      for( ; ; )
      {
        std::string input;
        std::getline(std::cin, input);
    
        std::cout << input << std::endl;
      }
    }
    

    bb


Anmelden zum Antworten