(CodeLib-Manager)
Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
|
AW: Wie oft wird diese Schleife durchlaufen?
17. Feb 2011, 12:09
Ich würde folgendes korrigieren:
LHelper := Trunc(((LEndX-LStartX)*(LEndY-LStartY))/Sqr(LStep))+1; // +1 wegen Trunc()
zu
LHelper := ceil((LEndX - LStartX) / LStep) * ceil((LEndY - LStartY) / LStep);
Zur Erklärung zu deinem Beispiel: Die X-Schleife wird 16 mal durchlaufen, die Y-Schleife 9 mal. Folglich greifst du auf 144 Elemente zu.
LHelper wird aber anders berechnet: 1000/64 = 15.625, 770/64 = 8.90625. Das Produkt daraus wird aber 139.16..., entsprechend bekommt das Array nur 140 Elemente. Es muss vor dem Multiplizieren gerunden werden.
greetz
Mike
Mike Passion is no replacement for reason
|