Schleifenzähler



  • Hallo liebe Community!
    Gibt es in C++ so etwas wie einen Schleifenzähler? Also ein Befehl oder dergleichen der bei einer Iteration die Anzahl an benötigten Schritten festhält?



  • Siehe for-schleife, siehe:

    int i = 0;
    while (...)
    {
     ...
     ++i;
    }
    


  • So in etwa habe ich meine Schleife definiert, jedoch habe ich

    for( int i = 0; i < i_max; ++i ){
    };
    

    mit i_max=maximale Anzahl an Iterationen, allerdings kann ich daraus nicht sehen wie viele Iterationen die Schleife letzten Endes tatsächlich benötigt bis sie auf ein Ergebnis stößt. Kann man das da noch irgendwie einfügen?



  • Hast es doch schon!?

    for( int i = 0; i < i_max; ++i ){ 
    -> Durchlauf-Nr. ist hier erkennbar an i + 1 da in diesem Fall auch 0 gezählt wird 
    };
    


  • Wenn ich die Anwendung dazu am Ende öffne kriege ich entweder das Ergebnis der Schleife oder dass es kein Ergebnis ist. Wurde ein Ergebnis gefunden weiß ich allerdings nicht nach wie vielen Iterationen es letzten Endes gefunden wurde.
    Beispiel:
    Ich setze setze i= 0 und i_max = 1000 zu Beginn der Schleife. Dann bekomme ich ein Ergebnis z.B. Ergebnis = 5 am Ende.
    Setze ich allerdings i = 0 und i_max = 20 komme ich zum gleichen Ergebnis.
    Bei i_max =5 kommt jedoch eine Fehlermeldung.

    Meine Frage ist also: Wie erfahre ich, welches das minimale i ist, mit welcher ein Ergebnis gefunden wird? Außer durch fortwährendes ausprobieren. Also wie lass ich mir Anzeigen wie viele Durchläufe es letzten Endes gab?



  • "Ich bekomme ein Ergebnis" und "kommt eine Fehlermeldung" - aha.



  • manni66 schrieb:

    "Ich bekomme ein Ergebnis" und "kommt eine Fehlermeldung" - aha.

    Schlechte Formulierung meinerseits. Gemeint ist, dass bei zu kleiner Wahl von i kein Ergebnis gefunden wird.



  • Mikomi schrieb:

    Wenn ich die Anwendung dazu am Ende öffne kriege ich entweder das Ergebnis der Schleife oder dass es kein Ergebnis ist. Wurde ein Ergebnis gefunden weiß ich allerdings nicht nach wie vielen Iterationen es letzten Endes gefunden wurde.

    Dann musst du dir entweder i merken (z.B. wenn Ergebnis zutrifft dann iErgebnis = i) oder Schleife verlassen wenn Ergebnis (was auch immer das ist) zutrifft, dann steht in i der letzte Durchlauf.

    Beispiel:
    Ich setze setze i= 0 und i_max = 1000 zu Beginn der Schleife. Dann bekomme ich ein Ergebnis z.B. Ergebnis = 5 am Ende.
    Setze ich allerdings i = 0 und i_max = 20 komme ich zum gleichen Ergebnis.
    Bei i_max =5 kommt jedoch eine Fehlermeldung.

    Meine Frage ist also: Wie erfahre ich, welches das minimale i ist, mit welcher ein Ergebnis gefunden wird? Außer durch fortwährendes ausprobieren. Also wie lass ich mir Anzeigen wie viele Durchläufe es letzten Endes gab?

    Keine Ahnung, poste doch mal das Coding



  • Schon okay, danke für die Antwort deejey, hat mir in etwa gesagt was ich wissen musste 👍



  • Mikomi: Du wirst hier nicht C++ lernen. Nimm dazu ein Buch, oder Deine Unterlagen aus Schule/Uni.

    Wenn Du Probleme hast, poste ein minimales(!) Beispiel und evtl. Fehlermeldungen. Bestenfalls fällt Dir Dein Fehler schon selbst auf - oder die Fehlermeldung gibt Dir (wie in diesem Fall) einen Anhaltspunkt!

    Z.B. Hättest Du schreiben können:

    Liebe Community.

    #include <iostream>
    
    int main(){
      const int i_max=20;
      for( int i = 0; i < i_max; ++i ){
        // beendet u.U. die Schleife
      };
      std::cout << i << "Iteratationen\n";
    }
    

    Gibt folgenden Fehler, warum?

    test.cc:8:16: error: ‘i’ was not declared in this scope
       std::cout << i << "Iteratationen\n";
                    ^
    


  • Furble Wurble schrieb:

    Mikomi: Du wirst hier nicht C++ lernen. Nimm dazu ein Buch, oder Deine Unterlagen aus Schule/Uni.

    äh ... ist doch normal, ein Forum kann und will ja auch keine kompletten Inhalte vermitteln sondern nur auf konkrete Punkte/Fragen eingehen



  • Furble Wurble schrieb:

    Gibt folgenden Fehler, warum?

    test.cc:8:16: error: ‘i’ was not declared in this scope
       std::cout << i << "Iteratationen\n";
                    ^
    

    Weil es Irritationen und nicht Iteratationen heissen muss. :p



  • Am simpelsten baut man so eine Schleife in eine Funktion und verlaesst die Schleife dann bei Bedarf mit return i.


Log in to reply