[VisualBasic] Nullstellenberechnung

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von illuzione, 29. September 2006 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  1. #1 29. September 2006
    Nullstellenberechnung

    Ich möchte mit Visual Basic for Applications (VBA) eine Userform erstellen, auf der es mir möglich ist Nullstellen einer quadtratischen Funktion auszurechnen: f(x) = ax^2 + bx +c

    So dies ist mir auch soweit gelungen und jetzt gibt es nur folgendes Problemchen:

    Bei der Ausgabe wenn "a = 1" (Grundlage für die PQ Formel) gibt er die Nullstellen 0 und 0 aus.
    Jedoch wenn "a <> 1" geht alles prima und rechnet ganz normal, zeigt mir die Nullstellen auch an.

    Hier der Code, wäre nett wenn ihr mit weiterhelfen könnt:

    Code:
     
    Private Sub cmd_rechnen1_Click()
    Dim a, b, c As Single
    Dim x1, x2 As Currency
    
    a = Val(txt_a.Text)
    b = Val(txt_b.Text)
    c = Val(txt_c.Text)
    
    If a = 1 Then
     PQ_Formel
    Else
     Nullsetzen_PQ_Formel
     
    End If
    
    If pq1 Or pq2 < 0 Then
    MsgBox "x1 Or x2 < 0", 16, "Fehler"
    End If
    End Sub
    
    Private Sub PQ_Formel()
    Dim pq1, pq2, uw As Currency
    '
    uw = (b1 / 2) ^ 2 - (c1)
    If uw < 0 Then
    MsgBox "Negative Zahl unter der Wurzel!", 16, "Fehler"
    Else
    pq1 = -(b / 2) + Sqr(uw)
    pq2 = -(b / 2) - Sqr(uw)
    '
    txt_x1.Text = Str(pq1)
    txt_x2.Text = Str(pq2)
    End If
    End Sub
    
    Private Sub Nullsetzen_PQ_Formel()
    Dim a, b, c, a1, b1, c1, uw As Single
    a = Val(txt_a.Text)
    b = Val(txt_b.Text)
    c = Val(txt_c.Text)
    '
    b1 = b / a
    c1 = c / a
    a1 = 1
    '
    uw = (b1 / 2) ^ 2 - (c1)
    If uw < 0 Then
    MsgBox "Negative Zahl unter der Wurzel", 16, "Fehler"
    Else
    pq1 = -(b1 / 2) + Sqr(uw)
    pq2 = -(b1 / 2) - Sqr(uw)
    '
    txt_x1 = Str(pq1)
    txt_x2 = Str(pq2)
    End If
    End Sub
    Private Sub cmd_reset_Click()
    txt_a = ""
    txt_b = ""
    txt_c = ""
    txt_x1 = ""
    txt_x2 = ""
    txt_a.SetFocus
    End Sub
    
    Und so sieht die Userform aus:
    {bild-down: http://imageshack.us/a/img468/7394/userform2pk8.jpg}

    Achso: uw = unter-wurzel mir ist nix besseres eingefallen :p

    Ich weiß sieht ein wenig unübersichtlich aus, dafür entschuldige ich mich. hab das aber auch net in der schule gelernt mach das son bisschen wenn mir langweilig ist.


    Danke im Vorraus, illuzione
     

  2. Anzeige
  3. #2 29. September 2006
    AW: Nullstellenberechnung

    das is doch diese mondscheinformel oder?

    sowas hab ich auch ma programmiert, warte:

    download
     
  4. #3 29. September 2006
    AW: Nullstellenberechnung

    deine form stimmt nich ganz :p

    Nullstelle: x0
    Also kleines "x" und dann so Fußnote "0" XD
    Unsere Mathelehrerin hääte dir dadrauf kein einzigen Notenpunkt gegeben :p
    Aber zur Lösung kann ich sonst auch net helfen, sry^^
     
  5. #4 29. September 2006
    AW: Nullstellenberechnung

    Gilt nicht wenn man was in einem Sub dim t das das nur da gilt?
    Ich meine die Gültigkeit der Variablen... sind die mit dim im Sub fürs ganze form gedimmt, muss das nich nach ganz oben.(Object ex... oder so)


    Code:
    Private Sub 
    Dim 'egal was
    End Sub
    mfg
    Nash
     
  6. #5 30. September 2006
    AW: Nullstellenberechnung

    Option Explicit über die Subs und bei den einzelnen Subs wegmachen
    dann gehts hab selbst probiert. ^^
    danke Nash war mir bis eben auch ein rätsel warum des net ging :(
     
  7. #6 30. September 2006
    AW: Nullstellenberechnung

    Code:
    Option Explicit
    Dim a, b, c As Single
    Dim pq1, pq2, uw As Currency
    Dim a1, b1, c1 As Single
    geht, wunderbar, bewertung haste auch.
    beschäftige mich mit vb noch net so lange, hab lieber alles 3 mal geschreiben als einmal bei "option explicit" :p

    thx, mfg illuzione
     

  8. Videos zum Thema
Die Seite wird geladen...