also ist es mit dem helper nicht möglich die schleifenanzahl zu verändern?
Ich glaube du hältst dein Compiler für Intelligenter als er ist.
for(i=1; i<=10 && i<=h; i++)
printf("Bis 10 oder 5?\n");
Es wird immer nur bis 5 laufen.
Kurz nochmal zur for-schleife:
Dein Programm geht Anweisung für Anweisung durch. Die erste Anweisung ist der Schleifenkopf:
Beim ersten Durchlauf wird i der Wert 1 zugewiesen, dann wir die Bedinung evaluiert:
Schleife weiter ausführen wenn i <= 10
UND i <= h
Aufgrund des Postfix-Operators(i++) wird der Inkrement erst am Ende der Schleife ausgeführt.
Danach geht dein Programm in den Schleifenkörper:
Es wird also ("Bis 10 oder 5?\n" ausgegeben, da keine weitere Anweisung folgt ist der Schleifenkörper abgearbeitet, i wird inkrementiert und es geht alles von vorne los.
Sobald die Schleife 5 mal lief, ist die Bedingung i <= 10 UND i <= h nicht mehr erfüllt ist, da i jetzt 6 ist und damit größer als h=5.
Die Idee mit dem Helfer ist eigentliche folgende:
Code: Alles auswählen
int i, helper = 1;
for(i = 0; i < 100 && helper; i++)
{
DoSomehting(i);
if(SomeCalculation(i) == 1) //Wir überprüfen ob irgendeine Bedingung erfüllt wurde, die das vorzeitige abbrechen der Schleife erfordert
helper = 0; //Helper auf 0 setzten, um schleife beim nächsten Durchlauf abzubrechen.
}
Du kannst dem helper einen neuen Wert zuweisen, der dann den Ablauf beeinflusst.
Redundanz macht wiederholen unnötig.
quod erat expectandum