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?
-
Schreibt man goto´s in C++ so kompliziert?
Ich hoffe für mich ist auch noch ein Platz auf der Couch
-
PAD schrieb:
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.