[VB .net] Wo liegt der Fehler?
lima-city → Forum → Programmiersprachen → Basic
beitrag
catch
doubeln
einstellung
erste
folgende einstellungen
folgender fehler
formen
fllen
handle
hinterm
inhalt
komma
lineare gleichung
lsung
men
message
option
sender
teilung
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
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 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage