kostenloser Webspace werbefrei: lima-city


[VB .net] Wo liegt der Fehler?

lima-cityForumProgrammiersprachenBasic

  1. Autor dieses Themas

    fcr

    Kostenloser Webspace von fcr

    fcr hat kostenlosen Webspace.

    Hi,
    hab grad mein erstes Programm geschrieben mit dem Visual Studio von Microsoft.

    Das Programm soll eine lineare Gleichung mit 2 Variablen mithilfe des Determinantenverfahrens errechnen (also die Lösungsmenge von xy).

    Das Programm sieht so aus:
    http://fcr.lima-city.de/programm.png

    Die Textboxen haben (v.l.n.r.) die Namen txta1, txtb1, txtc1, txta2, txtb2, txtc2, lsg. Der Button heißt cmdrechnen.

    Das hier ist der Quelltext:

    Public Class Form1

    Private Sub cmdrechnen_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdrechnen.Click
    Dim a1 = txta1.Text
    Dim a2 = txta2.Text
    Dim b1 = txtb1.Text
    Dim b2 = txtb2.Text
    Dim c1 = txtc1.Text
    Dim c2 = txtc2.Text
    Dim d = a1 / b2 - a2 / b1
    Dim dx = c1 / b2 - c2 / b1
    Dim dy = a1 / c2 - a2 / c1
    Dim lsgx = dx / d
    Dim lsgy = dy / d
    Dim lsg = "{(" & lsgx & "|" & lsgy & ")}"
    txtlsg.Text = lsg
    End Sub
    End Class


    Der obere Text stammt vom Programm, ich hab nur das von Dim a1 bis =lsg geschrieben.
    Wie ihr sehr schreibe ich den Inhalt der Textfelder txta1 bis txtc2 in Variablen.
    Dann errechne ich die Hauptdeterminante d sowie dx und dy.
    Mit dx/d und dy/d errechne ich die Lösungen von x und y.
    Dann wird die Lösungsmenge in der Form {(x|y)} in die untere Textbox geschrieben.

    Leider kommen immer falsche Ergebnisse raus, mit ganz vielen Stellen hinterm Komma.

    Woran liegt das?

    Beitrag geaendert: 23.2.2007 20:12:40 von fcr
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. cbhp

    Co-Admin Kostenloser Webspace von cbhp

    cbhp hat kostenlosen Webspace.

    Fehler war, dass du die Variablen nicht deklariert hast, also nicht den Variablen zugewiesen hast, von welchem Typ sie sind (z.B. Text oder Zahl)

    Damit so etwas nicht mehr passiert, solltest du in deinem Programm folgende Einstellungen treffen:
    Option Explicit On
    Option Strict On
    Option Compare Binary
    Diese Einstellungen kannst du entweder im Code selbst vor "Public Class ..." einfügen oder im Menü "Projekt / Eigenschaften / Allgemeine Eigenschaften / Erstellen"



    Hinweis:

    Das besondere an dem Typ "Double" ist dann er bei Teilung durch Null die Zahl "n. def." zurückgibt und in anderen Fällen z.B. die Zahl "Plus Unendlich" oder auch "Minus Unendlich".



    Hier ist der korrigierte Code:

    Private Sub cmdrechnen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdrechnen.Click

    Try
    Dim a1 As Double = CType(txta1.Text, Double)
    Dim a2 As Double = CType(txta2.Text, Double)
    Dim b1 As Double = CType(txtb1.Text, Double)
    Dim b2 As Double = CType(txtb2.Text, Double)
    Dim c1 As Double = CType(txtc1.Text, Double)
    Dim c2 As Double = CType(txtc2.Text, Double)
    Dim d As Double = a1 / b2 - a2 / b1
    Dim dx As Double = c1 / b2 - c2 / b1
    Dim dy As Double = a1 / c2 - a2 / c1
    Dim lsgx As Double = dx / d
    Dim lsgy As Double = dy / d
    txtlsg.Text = " { ( " & lsgx & " | " & lsgy & " ) } "
    Catch ex As Exception
    MsgBox("Es ist folgender Fehler aufgetreten:" & vbNewLine & ex.Message.ToString)
    End Try

    End Sub
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!