for Schleife beenden



  • Sorry redhead, dieser Vorschlag kam am Anfang von Akari



  • Nur damit es auch noch da steht:

    try
    	{
    		for(int i=0; i<10; ++i)
    		{
    			for(int j=0; j<10; ++j)
    			{
    				for(int k=0; k<10; ++k)
    				{
    					if(a[i][j][k] == 0)
    						throw;
    				}
    			}
    		}
    	}
    	catch(...) { }
    

    Das würde ich verwenden wenn der Abruch wirklich eine Ausnahme ist. Auf solche verschachtelten Konstruktionen kann man aber imo meistens verzichten...



  • Hm, ich weis zwar jetzt nicht, ob das ISO-Konform ist, aber warum nicht einfach die bereits vorhandenen Bedingungen zu einem Wiederspruch führen:

    for (int i = 0; i < 10; ++i)
    {
      for (int j = 0; j < 10; ++j)
      {
        for (int k = 0; k < 10; ++k)
        {
          // abbruch wenn k = 5
          if (k == 5)
          {
            i = 10;
            j = 10;
            break;
          }
        }
      }
    }
    


  • MFK schrieb:

    *couchzurechtrück*
    *popcornhol*

    Ist noch ein Platz frei? 😃
    Hat eigentlich mal jemand gezählt, wie oft wir dieses Thema schon durchgekaut haben? 🙄



  • @Fireflow

    Schreibt man goto´s in C++ so kompliziert?

    Ich hoffe für mich ist auch noch ein Platz auf der Couch



  • PAD schrieb:

    @Fireflow

    Schreibt man goto´s in C++ so kompliziert?

    Ich hoffe für mich ist auch noch ein Platz auf der Couch

    Nein ich hab ja dazugeschrieben ich würde es nur verwenden wenn der Abbruch der Schleife eine Ausnahme ist die dann noch behandelt werden muss.



  • Ich bin in C++ nicht so sattelfest, sonst hätte ich´s zu meiner C goto Lösung dazugeschrieben, für die dieselbe Post(Pre)misse gilt.



  • groovemaster schrieb:

    Ist noch ein Platz frei? 😃

    PAD schrieb:

    Ich hoffe für mich ist auch noch ein Platz auf der Couch

    Sicher, setzt euch 😃

    Habt ihr spezielle Favoriten?

    Die Abbruchvariable-idtiotisch-Finder oder die Funktionsaufruf-wegen-Overhead-Ablehner oder die Dogmatischen-Goto-Verteufler? Oder gar die Exceptions-vor-Missbrauch-Schützer? Von denen hatten wir bis jetzt noch keinen, genau wie von den Bei-auf-Endwert-setzen-der-äußeren-Schleifenvariablen-die-Hände-über-dem-Kopf-Zusammenschlager. Aber die Vorlage ist ja schon da... 😉



  • Beppo schrieb:

    goto Befehle werden von C++ Programmierer ungern gesehehen.

    c++ programmierer haben ja exceptions

    try
        {
            for(;;)
                for(;;)
                    for(int x=0; x<10; x++)
                    {
                        cout << x << endl;
                        if (x == 2)
                            throw(0); // leave all loops 
                    }
        }
        catch(...)
        {
           // intentionally no code here
        }
        //... hier geht's weiter
    

    btw: ach wie gut, dass ich c-coder bin. ich darf goto nehmen 😃

    edit: mist, sowas stand ja schon hier



  • Natürlich könnte man auch die 3 Schleifen zu einer "vereinfachen":

    for(int i=0, j=0, k=0; i<3; ++k<3 ? 0 : (++j<3 ? k=0 : j=0&++i))
    {
        if(...) break;
    }
    

    *duck-und-weg*

    Fireflow^^



  • Hallo,

    habe auch den Rest verfolgt. Man sieht, das es verschiedene Möglichkeiten ergibt, eine Aufgabe zu lößen. Ich habe die Version von @Sunday genommen, da diese für mich eine überschaubare Lösung darstellt.

    Gruß Siegfried 👍 👍 👍



  • MFK schrieb:

    Habt ihr spezielle Favoriten?

    MFK schrieb:

    die Funktionsaufruf-wegen-Overhead-Ablehner

    Definitiv mein Favorit. 🙂


Anmelden zum Antworten