PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (C#) - Zählvariable einer FOR-Schleife innerhalb der FOR-Schleife setzen



noobee
12.05.2018, 02:57
Mahlzeit...

mich beschäftigt um diese Zeit folgendes Problem:
Ich habe eine FOR, z.B. ( for(int zahl = 1; zahl < 11; zahl++) ). In dieser FOR finden nun mittels while() einige Berechnungen statt. Sollte eine der Berechnungen innerhalb der while() nicht gelöst werden, setze ich alle Variablen auf den Originalwert, erhöhe 2 Rechenvariablen und möchte dann die FOR erneut bei "zahl = 1" beginnen lassen, um dann die Berechnungen mit den 2 erhöhten Rechenvariablen zu beginnen.
Jetzt kann ich aber im z.B. 5. Durchlauf nicht einfach die Variable "zahl" auf "1" setzen und hoffen, dass die FOR wieder von vorne beginnt ;)

Wie kann ich also nun innerhalb der FOR die FOR abbrechen und bei "1" neu beginnen lassen?

O.O Hab ich das jetzt verständlich erklärt ?? O.O

Nimbus
12.05.2018, 08:04
Warum kannst du nicht einfach die Variable auf 1 zurück setzen? Das sollte schon funktionieren. Du musst natürlich an die anderen Variablen denken.

Bin mir nicht ganz sicher, ob ich deine Beschreibung verstanden habe, aber für mich klingt es spontan danach, dass man den Berechnungsteil wohl in eine eigene Funktion packen kann.

Eventuell würde es auch helfen, wenn du deinen Code mal einstellst, falls er nicht zu komplex/lang/geheim ist.

noobee
12.05.2018, 09:31
Ok, ich geb mal PseudoCode an. Das wäre sonst zu viel/komplex. Ich hoffe, das Problem wird so etwas verständlicher :emoji53:



int j;
int k = 0;

for(j = k; j < 17; j++){

while(meter3sekunde[j] > 20.15 && check_1 == true){

rechenvariable -= 0.001f;
myCalc();
if(meter3sekunde_vorgaenger <= meter3sekunde)

{
//in dieser IF habe ich nun festgestellt, dass die Berechnung neu gemacht werden muss, also wollte ich j auf 0 setzen,
//um die FOR erneut laufen zu lassen
k = 0;
rechenvariable_2 -= 0.1f;
}
//check_1 = false;
//check_2 = false


}

}

udg
12.05.2018, 10:14
Ich habs zwar noch nicht ganz verstanden, sorry,
Mit "break" und "continue" in einer "while" Schleife schon gearbeitet?

Vg

noobee
12.05.2018, 10:25
Also ganz einfach formuliert ist es folgendes Problem:

In der FOR stellt meine Berechnung einen Fehler fest. Ich setze meine Berechnungsvariablen neu und möchte, dass die FOR mittendrin einfach wieder bei 0 beginnt, also wieder komplett von vorne läuft. Die FOR läuft also im Prinzip so lange von vorne neu an, bis kein Fehler mehr in der Berechnung in der FOR festgestellt wird.

Nimbus
12.05.2018, 10:29
Ich würde sagen, dass du einfach j = 0 setzt (nicht k = 0), denn die Zuweisung j=k ist zu diesem Zeitpunkt bereits vorbei.
Zusätzlich brauchst du noch ein "break" vor dem Ende des Rumpfes der If-Abfrage.

JulianHB
12.05.2018, 11:48
Einfach j = 0 setzen nachdem dein Programm den Fehler erkannt hat bzw. weiß das es neu berechnen soll.