Probleme mit While Schleife

  • VB6

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von HundamStrand.

    Probleme mit While Schleife

    Ich möchte meine While Schleife an zwei Bedingungen knüpfen die in einem "Oder" Verhältnis zueinander stehen. Folgender Code:

    Visual Basic-Quellcode

    1. Dim iter As Integer
    2. Dim phi, phi_alt, phi_neu, abbruch As Double
    3. iter = 1
    4. abbruch = 0.000000000001
    5. phi0=0.91392257542
    6. phi_alt = phi0
    7. While (iter < 10) Or ((phi_neu - phi) > abbruch)
    8. phi = phi_alt
    9. phi_neu = phi0 - (beta * Sin(2 * phi) + gamma * Sin(4 * phi) + delta * Sin(6 * phi) + epsilon * Sin(8 * phi))
    10. phi_alt = phi_neu
    11. iter = iter + 1
    12. Wend
    13. '0.916356819328


    Leider bricht er die Schleife nur bei der ersten Bedingung iter<10 ab. Aber bereits beim vierten bzw. fünften Durchlauf müsste er wegen der zweiten Bedingung die Schleife beenden, tut es aber nicht. Kann man eine While Schleife nicht an eine Oder Bedingung knüpfen?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „HundamStrand“ ()

    Ok, das Problem ist gelöst. Erstens ist eine "Oder" Verknüpfung quatsch. Richtig ist eine "Und" Verknüpfung.
    Außerdem gab es das Problem, dass bei der 3. Iteration die Differenz zwischen phi_neu und phi kleiner als Null war, somit negativ ist. Damit würde die Abbruchbedingung zu früh greifen. Hier mein Code, der jetzt hoffentlich richtig ist. ;)

    Visual Basic-Quellcode

    1. Dim iter As Integer
    2. Dim phi, phi_alt, phi_neu, abbruch, differenz As Double
    3. iter = 1
    4. differenz = 1
    5. abbruch = 0.000000000001
    6. phi_alt = phi0
    7. While (iter < 10) And (differenz > abbruch)
    8. phi = phi_alt
    9. phi_neu = phi0 - (beta * Sin(2 * phi) + gamma * Sin(4 * phi) + delta * Sin(6 * phi) + epsilon * Sin(8 * phi))
    10. phi_alt = phi_neu
    11. iter = iter + 1
    12. differenz = phi_neu - phi
    13. If differenz < 0 Then
    14. differenz = differenz * (-1)
    15. Else
    16. differenz = differenz
    17. End If
    18. Wend