Hallo liebe Freunde der Programmierung!
Ich bin derzeit so ziemlich am Ende meines Lateins (was zugegeben nicht gerade viel ist ;)), aber vielleicht könnt ihr mir jahelfen.
Ich habe von der Schule eine Zusatzaufgabe zur Notenverbesserung erhalten, die folgendes verlangt:
-Programmieren eines Taschenrechners mit Visual Basic
-Verwendungsmöglichkeit von Grundrechenarten, negativen Zahlen (+/- Taste) und Kommazahlen
-Eingabe der Zahlen soll mit Buttons von 0-9 realisiert werden
Das alles habe ich ja schon soweit gelöst, das Problem liegt aber an den Rechenarten.
Mein Problem ist, dass ich bei diesem Taschenrechner keine beschränkte Anzahl an Rechenoperationen machen darf, sondern diese unbeschränkt sein muss. Ist also kein 0-8-15 Taschenrechner, den hätte ich auch so hinbekommen ;)
Demnach existiert nur ein Textfeld, auf dem die Zahlen einzutragen sind.
Nun zum eigentlichen Problem: ich bekomme nicht hin, dass ich Rechenoperationen mit diesem Rechner rechnen kann bzw. komplett falsche und sinnlose Ergebnisse rauskommen.
Hier der Quelltext zu den Buttons der Addition, Subtraktion, Multiplikation und Division, da ausschließlich diese von Fehlern betroffen sind:
Private Sub btn_plus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_plus.Click
b = tb_ergebnis.Text
If c = 0 Then c = 1
If d = 0 Then d = 1
b = b * c
b = b / d
a = a + b
a = a - m
m = b
c = 1
d = 1
b = 0
tb_ergebnis.Text = a
End Sub
Private Sub btn_minus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_minus.Click
b = tb_ergebnis.Text
If c = 0 Then c = 1
If d = 0 Then d = 1
b = b * c
b = b / d
a = a - b
c = 1
d = 1
b = 0
m = 0
tb_ergebnis.Text = a
End Sub
Private Sub btn_mal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_mal.Click
b = tb_ergebnis.Text
If c = 0 Then
c = b
b = 0
ElseIf c <> 0 Then
c = c * b
b = 0
End If
tb_ergebnis.Text = c
End Sub
Private Sub btn_durch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_durch.Click
b = tb_ergebnis.Text
If c = 0 Then
c = b
b = 0
ElseIf c <> 0 Then
c = c / b
b = 0
End If
tb_ergebnis.Text = c
End Sub
Wenn ich Rechenoperationen teste, die die Adition und Multiplikation enthalten, funktioniert der Rechner. Auch Plus und Mal alleine funktioniert einwandfrei.
Bei den anderen Operationen gibt es allerdings inhaltliche Fehler, dadurch sie noch nicht mal als einzelne Operationen richtig gerechnet werden.
Bei "minus": BSP: Durch das Drücken des Buttons der Zahl 6 ändert sich diese ohne Eingabe einer weiteren Zahl nach drücken des Minus-Buttons in eine -6
Bei "durch": BSP: Rechne ich 6 / 2 so kommt nicht 3, sondern 12 raus, die Zahl wird also Mal genommen
Durch dieses Problem funktionieren die Rechenarten natürlich nicht untereinander.
Ich entschuldige mich schonmal für meine schlechten Programmierkenntnisse, aber mir fällt es schwer, soetwas zügig zu begreifen und vieles gelernte in der Schulzeit vergesse; leider.
Ich bin derzeit so ziemlich am Ende meines Lateins (was zugegeben nicht gerade viel ist ;)), aber vielleicht könnt ihr mir jahelfen.
Ich habe von der Schule eine Zusatzaufgabe zur Notenverbesserung erhalten, die folgendes verlangt:
-Programmieren eines Taschenrechners mit Visual Basic
-Verwendungsmöglichkeit von Grundrechenarten, negativen Zahlen (+/- Taste) und Kommazahlen
-Eingabe der Zahlen soll mit Buttons von 0-9 realisiert werden
Das alles habe ich ja schon soweit gelöst, das Problem liegt aber an den Rechenarten.
Mein Problem ist, dass ich bei diesem Taschenrechner keine beschränkte Anzahl an Rechenoperationen machen darf, sondern diese unbeschränkt sein muss. Ist also kein 0-8-15 Taschenrechner, den hätte ich auch so hinbekommen ;)
Demnach existiert nur ein Textfeld, auf dem die Zahlen einzutragen sind.
Nun zum eigentlichen Problem: ich bekomme nicht hin, dass ich Rechenoperationen mit diesem Rechner rechnen kann bzw. komplett falsche und sinnlose Ergebnisse rauskommen.
Hier der Quelltext zu den Buttons der Addition, Subtraktion, Multiplikation und Division, da ausschließlich diese von Fehlern betroffen sind:
Private Sub btn_plus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_plus.Click
b = tb_ergebnis.Text
If c = 0 Then c = 1
If d = 0 Then d = 1
b = b * c
b = b / d
a = a + b
a = a - m
m = b
c = 1
d = 1
b = 0
tb_ergebnis.Text = a
End Sub
Private Sub btn_minus_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_minus.Click
b = tb_ergebnis.Text
If c = 0 Then c = 1
If d = 0 Then d = 1
b = b * c
b = b / d
a = a - b
c = 1
d = 1
b = 0
m = 0
tb_ergebnis.Text = a
End Sub
Private Sub btn_mal_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_mal.Click
b = tb_ergebnis.Text
If c = 0 Then
c = b
b = 0
ElseIf c <> 0 Then
c = c * b
b = 0
End If
tb_ergebnis.Text = c
End Sub
Private Sub btn_durch_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_durch.Click
b = tb_ergebnis.Text
If c = 0 Then
c = b
b = 0
ElseIf c <> 0 Then
c = c / b
b = 0
End If
tb_ergebnis.Text = c
End Sub
Wenn ich Rechenoperationen teste, die die Adition und Multiplikation enthalten, funktioniert der Rechner. Auch Plus und Mal alleine funktioniert einwandfrei.
Bei den anderen Operationen gibt es allerdings inhaltliche Fehler, dadurch sie noch nicht mal als einzelne Operationen richtig gerechnet werden.
Bei "minus": BSP: Durch das Drücken des Buttons der Zahl 6 ändert sich diese ohne Eingabe einer weiteren Zahl nach drücken des Minus-Buttons in eine -6
Bei "durch": BSP: Rechne ich 6 / 2 so kommt nicht 3, sondern 12 raus, die Zahl wird also Mal genommen
Durch dieses Problem funktionieren die Rechenarten natürlich nicht untereinander.
Ich entschuldige mich schonmal für meine schlechten Programmierkenntnisse, aber mir fällt es schwer, soetwas zügig zu begreifen und vieles gelernte in der Schulzeit vergesse; leider.
Ich kann dir den Quellcode von meinem damaligen Taschenrechner geben .. also von der frm datei die anderen hab ich auch noch da hab ich das so gemacht:
VERSION 5.00
Begin VB.Form Form1
Caption = "Taschenrechner"
ClientHeight = 3840
ClientLeft = 60
ClientTop = 450
ClientWidth = 3585
LinkTopic = "Form1"
ScaleHeight = 3840
ScaleWidth = 3585
StartUpPosition = 3 'Windows-Standard
Begin VB.CommandButton Command18
Caption = "000"
Height = 495
Left = 1560
TabIndex = 18
Top = 3120
Width = 495
End
Begin VB.CommandButton Command17
Caption = "00"
Height = 495
Left = 960
TabIndex = 17
Top = 3120
Width = 495
End
Begin VB.CommandButton Command16
Caption = "0"
Height = 495
Left = 360
TabIndex = 16
Top = 3120
Width = 495
End
Begin VB.CommandButton Command15
Caption = "C"
Height = 495
Left = 2160
TabIndex = 15
Top = 3120
Width = 1095
End
Begin VB.CommandButton Command14
Caption = "/"
Height = 495
Left = 2760
TabIndex = 14
Top = 2520
Width = 495
End
Begin VB.CommandButton Command13
Caption = "*"
Height = 495
Left = 2760
TabIndex = 13
Top = 1920
Width = 495
End
Begin VB.CommandButton Command12
Caption = "-"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 2760
TabIndex = 12
Top = 1320
Width = 495
End
Begin VB.CommandButton Command11
Caption = "+"
Height = 495
Left = 2160
TabIndex = 11
Top = 1320
Width = 495
End
Begin VB.CommandButton Command10
Caption = "="
Height = 1095
Left = 2160
TabIndex = 10
Top = 1920
Width = 495
End
Begin VB.CommandButton Command9
Caption = "9"
Height = 495
Left = 1560
TabIndex = 9
Top = 2520
Width = 495
End
Begin VB.CommandButton Command8
Caption = "8"
Height = 495
Left = 960
TabIndex = 8
Top = 2520
Width = 495
End
Begin VB.CommandButton Command7
Caption = "7"
Height = 495
Left = 360
TabIndex = 7
Top = 2520
Width = 495
End
Begin VB.CommandButton Command6
Caption = "6"
Height = 495
Left = 1560
TabIndex = 6
Top = 1920
Width = 495
End
Begin VB.CommandButton Command5
Caption = "5"
Height = 495
Left = 960
TabIndex = 5
Top = 1920
Width = 495
End
Begin VB.CommandButton Command4
Caption = "4"
Height = 495
Left = 360
TabIndex = 4
Top = 1920
Width = 495
End
Begin VB.CommandButton Command3
Caption = "3"
Height = 495
Left = 1560
TabIndex = 3
Top = 1320
Width = 495
End
Begin VB.CommandButton Command2
Caption = "2"
Height = 495
Left = 960
TabIndex = 2
Top = 1320
Width = 495
End
Begin VB.CommandButton Command1
Caption = "1"
Height = 495
Left = 360
TabIndex = 1
Top = 1320
Width = 495
End
Begin VB.TextBox Text1
Alignment = 1 'Rechts
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 360
TabIndex = 0
Top = 480
Width = 2895
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim rechenart As String
Dim zahl1 As String
Private Sub Command1_Click()
Text1 = Text1 + "1"
End Sub
Private Sub Command10_Click()
' Bei Fehler zu "Fehler springen
If zahl1 = "" Then
MsgBox ("Bitte zuerst erste Zahl eingeben!")
' überprüfen ob vor der Rechenart eine Zahl eingegeben wurde
ElseIf Text1 = "" Then
MsgBox ("Bitte zuerst Zahl eingeben!")
' überprüfen ob Text1 leer ist
ElseIf rechenart = "addieren" Then
Text1 = CDbl(Text1) + CDbl(zahl1)
' da Text1 ein string ist, muss man es zuerst zu einem double umwandeln(cdbl)
ElseIf rechenart = "subtrahieren" Then
Text1 = CDbl(zahl1) - CDbl(Text1)
ElseIf rechenart = "multiplizieren" Then
Text1 = CDbl(Text1) * CDbl(zahl1)
ElseIf rechenart = "dividieren" Then
Text1 = CDbl(zahl1) / CDbl(Text1)
End If
End Sub
Private Sub Command11_Click()
zahl1 = Text1
rechenart = "addieren"
Text1 = ""
End Sub
Private Sub Command12_Click()
zahl1 = Text1
rechenart = "subtrahieren"
Text1 = ""
End Sub
Private Sub Command13_Click()
zahl1 = Text1
rechenart = "multiplizieren"
Text1 = ""
End Sub
Private Sub Command14_Click()
zahl1 = Text1
rechenart = "dividieren"
Text1 = ""
End Sub
Private Sub Command15_Click()
zahl1 = ""
Text1 = ""
End Sub
Private Sub Command16_Click()
Text1 = Text1 + "0"
End Sub
Private Sub Command17_Click()
Text1 = Text1 + "00"
End Sub
Private Sub Command18_Click()
Text1 = Text1 + "000"
End Sub
Private Sub Command2_Click()
Text1 = Text1 + "2"
End Sub
Private Sub Command3_Click()
Text1 = Text1 + "3"
End Sub
Private Sub Command4_Click()
Text1 = Text1 + "4"
End Sub
Private Sub Command5_Click()
Text1 = Text1 + "5"
End Sub
Private Sub Command6_Click()
Text1 = Text1 + "6"
End Sub
Private Sub Command7_Click()
Text1 = Text1 + "7"
End Sub
Private Sub Command8_Click()
Text1 = Text1 + "8"
End Sub
Private Sub Command9_Click()
Text1 = Text1 + "9"
End Sub
VERSION 5.00
Begin VB.Form Form1
Caption = "Taschenrechner"
ClientHeight = 3840
ClientLeft = 60
ClientTop = 450
ClientWidth = 3585
LinkTopic = "Form1"
ScaleHeight = 3840
ScaleWidth = 3585
StartUpPosition = 3 'Windows-Standard
Begin VB.CommandButton Command18
Caption = "000"
Height = 495
Left = 1560
TabIndex = 18
Top = 3120
Width = 495
End
Begin VB.CommandButton Command17
Caption = "00"
Height = 495
Left = 960
TabIndex = 17
Top = 3120
Width = 495
End
Begin VB.CommandButton Command16
Caption = "0"
Height = 495
Left = 360
TabIndex = 16
Top = 3120
Width = 495
End
Begin VB.CommandButton Command15
Caption = "C"
Height = 495
Left = 2160
TabIndex = 15
Top = 3120
Width = 1095
End
Begin VB.CommandButton Command14
Caption = "/"
Height = 495
Left = 2760
TabIndex = 14
Top = 2520
Width = 495
End
Begin VB.CommandButton Command13
Caption = "*"
Height = 495
Left = 2760
TabIndex = 13
Top = 1920
Width = 495
End
Begin VB.CommandButton Command12
Caption = "-"
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 2760
TabIndex = 12
Top = 1320
Width = 495
End
Begin VB.CommandButton Command11
Caption = "+"
Height = 495
Left = 2160
TabIndex = 11
Top = 1320
Width = 495
End
Begin VB.CommandButton Command10
Caption = "="
Height = 1095
Left = 2160
TabIndex = 10
Top = 1920
Width = 495
End
Begin VB.CommandButton Command9
Caption = "9"
Height = 495
Left = 1560
TabIndex = 9
Top = 2520
Width = 495
End
Begin VB.CommandButton Command8
Caption = "8"
Height = 495
Left = 960
TabIndex = 8
Top = 2520
Width = 495
End
Begin VB.CommandButton Command7
Caption = "7"
Height = 495
Left = 360
TabIndex = 7
Top = 2520
Width = 495
End
Begin VB.CommandButton Command6
Caption = "6"
Height = 495
Left = 1560
TabIndex = 6
Top = 1920
Width = 495
End
Begin VB.CommandButton Command5
Caption = "5"
Height = 495
Left = 960
TabIndex = 5
Top = 1920
Width = 495
End
Begin VB.CommandButton Command4
Caption = "4"
Height = 495
Left = 360
TabIndex = 4
Top = 1920
Width = 495
End
Begin VB.CommandButton Command3
Caption = "3"
Height = 495
Left = 1560
TabIndex = 3
Top = 1320
Width = 495
End
Begin VB.CommandButton Command2
Caption = "2"
Height = 495
Left = 960
TabIndex = 2
Top = 1320
Width = 495
End
Begin VB.CommandButton Command1
Caption = "1"
Height = 495
Left = 360
TabIndex = 1
Top = 1320
Width = 495
End
Begin VB.TextBox Text1
Alignment = 1 'Rechts
BeginProperty Font
Name = "MS Sans Serif"
Size = 12
Charset = 0
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 495
Left = 360
TabIndex = 0
Top = 480
Width = 2895
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim rechenart As String
Dim zahl1 As String
Private Sub Command1_Click()
Text1 = Text1 + "1"
End Sub
Private Sub Command10_Click()
' Bei Fehler zu "Fehler springen
If zahl1 = "" Then
MsgBox ("Bitte zuerst erste Zahl eingeben!")
' überprüfen ob vor der Rechenart eine Zahl eingegeben wurde
ElseIf Text1 = "" Then
MsgBox ("Bitte zuerst Zahl eingeben!")
' überprüfen ob Text1 leer ist
ElseIf rechenart = "addieren" Then
Text1 = CDbl(Text1) + CDbl(zahl1)
' da Text1 ein string ist, muss man es zuerst zu einem double umwandeln(cdbl)
ElseIf rechenart = "subtrahieren" Then
Text1 = CDbl(zahl1) - CDbl(Text1)
ElseIf rechenart = "multiplizieren" Then
Text1 = CDbl(Text1) * CDbl(zahl1)
ElseIf rechenart = "dividieren" Then
Text1 = CDbl(zahl1) / CDbl(Text1)
End If
End Sub
Private Sub Command11_Click()
zahl1 = Text1
rechenart = "addieren"
Text1 = ""
End Sub
Private Sub Command12_Click()
zahl1 = Text1
rechenart = "subtrahieren"
Text1 = ""
End Sub
Private Sub Command13_Click()
zahl1 = Text1
rechenart = "multiplizieren"
Text1 = ""
End Sub
Private Sub Command14_Click()
zahl1 = Text1
rechenart = "dividieren"
Text1 = ""
End Sub
Private Sub Command15_Click()
zahl1 = ""
Text1 = ""
End Sub
Private Sub Command16_Click()
Text1 = Text1 + "0"
End Sub
Private Sub Command17_Click()
Text1 = Text1 + "00"
End Sub
Private Sub Command18_Click()
Text1 = Text1 + "000"
End Sub
Private Sub Command2_Click()
Text1 = Text1 + "2"
End Sub
Private Sub Command3_Click()
Text1 = Text1 + "3"
End Sub
Private Sub Command4_Click()
Text1 = Text1 + "4"
End Sub
Private Sub Command5_Click()
Text1 = Text1 + "5"
End Sub
Private Sub Command6_Click()
Text1 = Text1 + "6"
End Sub
Private Sub Command7_Click()
Text1 = Text1 + "7"
End Sub
Private Sub Command8_Click()
Text1 = Text1 + "8"
End Sub
Private Sub Command9_Click()
Text1 = Text1 + "9"
End Sub
Logge dich ein um einen Beitrag zu schreiben.