Fehler in For-Schleife

Edde

Grünschnabel
Hallo,

ich habe folgende For - Schleife erstellt:

For f = z To X1 < DataGridView1.Rows(f).Cells(0).Value Step 1

X1 = X1 - (DataGridView1.Rows(f).Cells(0).Value)

V= V + (b1 - (DataGridView1.Rows(f).Cells(1).Value)) * (DataGridView1.Rows(f).Cells(0).Value)

Next f

Leider muss da ein Fehler drin sein.
Wenn ich die Schleife durchlaufen lasse, wird die Schleife jedesmal nach dem 1. Durchlauf unterbrochen, auch wenn der Wert X1 < Zielfunktion noch nicht erreicht ist
Wäre wirklich klasse, wenn mir jemand einen Hinweis geben könnte.

Gruß
Edde
 
Hi Edde!

So richtig klar ist mir nicht, was Du mit Deiner Schleife erreichen willst...
Wenn ich das hier
For f = z To X1 < DataGridView1.Rows(f).Cells(0).Value Step 1
richtig verstehe, dann heißt das
Code:
For f = z To <Wahrheitswert> (also true oder false)

wie soll das gehen? true oder false kann doch nicht mit einem Zähler erreicht werden... oder hab ich jetzt was total falsch verstanden?

Viele Grüße
Sunfire
 
Servus!

Ich bin zwar in .net nicht unbedingt heimisch, aber ich würde einmal vermuten, dass

Code:
X1 < DataGridView1.Rows(f).Cells(0).Value

als Wahrheitswert 0 oder 1 aufgelöst wird. Daher ist bei ungleichem Wert das Ergebnis Wahr (und damit 1); daher ist die Ausstiegsbedingung aus der Schleife erfüllt.
 
Hallo,

die Schleife ist so gedacht, dass sie fortgesetzt wird, bis die Zielfunktion erreicht ist.
Das erreichen der Zielfunktion ist das Abbruchkriterium.
Ich habe es auch schon mit einem Größerzeichen probiert:
X1 > DataGridView1.Rows(f).Cells(0).Value
Dann bricht die Schleife nicht ab, sondern wird auch beim Überschreiten der Bedingung für die Zielfunktion weitergeführt.

Falls ich völlig auf dem falschen Weg sein sollte, dann wäre es super, wenn mir jemand kurz schreiben würde, wie man sowas normalerweise löst.

Es handelt sich um eine Zuschnittsoptimierung.
X1 steht für die noch zur Verfügung stehende Länge, um Teile von einer Grundplatte runterzuschneiden.

Bin für jeden Hinweis dankbar.

Gruß

Edde
 
Hi Edde,
in der for Schleife geht das nicht.
Du Schreibst das f abhängig von x1 ist.
aber x1 ist auch abhängig von f.

Du musst eine do while schleife machen.
Gruß Jürgen
 
Wenn ich das richtig verstanden habe, berechnet der Compiler die Anzahl der Durchgänge. Das bedeutet, dass der Endwert in dieser Zeit nicht verändert werden soll. Auch sollte die Zählvariable nicht verändert werden. In diesen Fällen ist, wie oben geschrieben, eine while- (oder allenfalls repeat-) Schleife vorzusehen.
 

Neue Beiträge

Zurück