2 Variablen Abbruchkriterium in Schleife bis zum größeren laufen
-
WOW krieg ich dazu noch ne kleine Erklärung?
für den Teil: i < (( sizeTeile < sizeTests) ? sizeTests : sizeTeile)Aber vielen Dank schon mal
-
Polofreak schrieb:
WOW krieg ich dazu noch ne kleine Erklärung?
für den Teil: i < (( sizeTeile < sizeTests) ? sizeTests : sizeTeile)Aber vielen Dank schon mal
Aufgrund der äußeren Klammern wird der Ternäre Operator (?:) zuerst bewertet.
Die Syntax des ?:-Operators ist:expression ? value1 : value2Wenn expression true ist wird value1 ausgewertet ansonsten value2. (Wobei du den ?:-Op auch verschachteln kannst).
Auf das Beispiel bezogen prüft der ?:-Operator welche Variable kleiner ist und nimmt dementsprechend die größere, welche dann in dem mittleren Ausdruck der For-Schleife bewertet wird...
/edit: code-tags...
/edit3
Caipi
-
Machs lieber so:
#include <algorithm> //für std::max, liefert aus zwei Werten den größeren int sizeTeile = 5; int sizeTest = 15; for( int i = 0, end = std::max( sizeTeile, sizeTest ); i < end; ++i )Du willst nen Grund wissen? Ganz einfach so ist es schneller und sauberer

-
aber std macht bei mir immer probleme! warum ist es sauberer?
Ich find das Klasse Lösung das einzigste was mich etwas stört ist das unsigned! Wenn jetzt getSize nen Fehler hat gibt sie -1 zurück, das bekomm ich jetzt aber gar nicht mit!
Aber macht ja nichts!
-
Polofreak schrieb:
aber std macht bei mir immer probleme! warum ist es sauberer?
Ich find das Klasse Lösung das einzigste was mich etwas stört ist das unsigned! Wenn jetzt getSize nen Fehler hat gibt sie -1 zurück, das bekomm ich jetzt aber gar nicht mit!
Aber macht ja nichts!Meinst du das unsigned aus der for-Schleife meines Posts?
Wenn ja: Das kannst du natürlich auch weglassen
Caipi
-
Es ist sauberer weil du wann immer mölich die Standardbibliothek verwenden solltest. Das macht deinen Code robuster, da diese Funktionen ausgiebig getestet wurden und daher Bugfrei sind (sicher hat die ein oder andere Implementierung wo nen Bug, aber sowas lässt sich dann schnell rausfinden mit ner Suche bei google).
Wenn du std::max verwendest kann es dir zB nicht passieren statt > < zu verwenden.Und inwiefern macht std bei dir Probleme?
-
ich weiß nicht ich hatte schon oft probleme und umgeh std wenn es irgendwie geht

ja ich meinte das unsigned in der Schleife, wenn ich das weglasse und es kommt ein negativer Wert, was macht dann die Schleife??
-
Wenn du das unsigned weglässt, dann läuft die Schleife vom negativen Wert bis zum Abbruchkriterium. Wenn der Wert positiv sein muss (wenn -1 nen Fehler ist) musst du die Werte vorher prüfen.
Und wenn du kein std nehmen willst, dann mach es so
for( int i = 0, end = sizeTeile > sizeTest ? sizeTeile : sizeTest; i < end; ++i );Sonst musst du die Abbruchbedingung ja nach jedem Schleifendurchgang neu berechnen.
-
Ich danke euch allen recht herzlich sieht schon mal ganz gut aus!
Vielen Dank
-
Hallo,
Hattest du deine erste Variante mal ausprobiert? Die geht nämlich.
Ciao