' Funktionen, die in allen Lösungen gebraucht werden:
Function wandle_in_double_um(ByVal eingabe As String) As Double
If Not IsNumeric(eingabe) Then
Err.Raise 5000, "wandle_in_double_um", "Bitte nur Zahlen eingeben!"
End If
wandle_in_double_um = CDbl(eingabe)
End Function
' Aufgabe 5.1
Sub Hauptprogramm_Wetterstation()
On Error GoTo Fehlerbehandlung
Dim Temperatur1 As Double
Dim Temperatur2 As Double
Dim Temperatur3 As Double
Temperatur1 = wandle_in_double_um(InputBox("Bitte erste Temperatur eingeben"))
Temperatur2 = wandle_in_double_um(InputBox("Bitte zweite Temperatur eingeben"))
Temperatur3 = wandle_in_double_um(InputBox("Bitte dritte Temperatur eingeben"))
pruefeTemperatur Temperatur1
pruefeTemperatur Temperatur2
pruefeTemperatur Temperatur3
MsgBox ("Mittelwert: " & berechneMittelwert(Temperatur1, Temperatur2, Temperatur3))
Exit Sub
Fehlerbehandlung:
MsgBox ("Fehler: " & Err.Description)
End Sub
Sub pruefeTemperatur(ByVal Temperatur As Double)
Const TempMin As Double = -30
Const TempMax As Double = 40
If (Temperatur < TempMin Or Temperatur > TempMax) Then
Err.Raise 5002, "pruefeTemperatur", "Die Temperatur muss zwischen -30 und 40 liegen"
End If
End Sub
Function berechneMittelwert(ByVal z1 As Double, ByVal z2 As Double, ByVal z3 As Double) As Double
berechneMittelwert = (z1 + z2 + z3) / 3
End Function
' Aufgabe 5.2
Sub Hauptprogramm_Verbrauch()
On Error GoTo Fehlerbehandlung
Dim Benzinmenge As Double
Dim Reichweite As Double
Dim Verbrauch As Double
Benzinmenge = wandle_in_double_um(InputBox("Bitte Benzinmenge eingeben"))
Verbrauch = wandle_in_double_um(InputBox("Bitte Verbrauch eingeben"))
pruefeBenzinmenge Benzinmenge
pruefeVerbrauch Verbrauch
Reichweite = berechneReichweite(Benzinmenge, Verbrauch)
MsgBox ("Ihr Reichweite ist: " & Reichweite & " km.")
Exit Sub
Fehlerbehandlung:
MsgBox ("Fehler: " & Err.Description)
End Sub
Function berechneReichweite(ByVal Benzin As Double, ByVal Verbrauch) As Double
berechneReichweite = Benzin * 100 / Verbrauch
End Function
Sub pruefeBenzinmenge(ByVal Benzinmenge As Double)
Const maxBenzin As Double = 70
If Benzinmenge < 0 Or Benzinmenge > maxBenzin Then
Err.Raise 5003, "pruefeBenzinmenge", "Die Benzinmenge muss zwischen 0 und 70 liegen"
End If
End Sub
Sub pruefeVerbrauch(ByVal Verbrauch As Double)
Const VerbrauchMin As Double = 2
Const VerbrauchMax As Double = 25
Const VerbrauchPlausi As Double = 15
If (Verbrauch < VerbrauchMin) Or (Verbrauch > VerbrauchMax) Then
Err.Raise 5002, "pruefeVerbrauch", "Der Verbrauch muss zwischen 2 und 25 liegen"
End If
If Verbrauch > VerbrauchPlausi Then
MsgBox ("Ihr Verbrauch ist sehr hoch!")
End If
End Sub