Die Aufgabe lautet:
Ein Extreme-Basejumper springt vom Felsen in die Tiefe.
Schreiben Sie eine Prozedur (Sub), die eine Tabelle erzeugt, in der die Fallstrecke (in Metern), die aktuelle Fallgeschwindigkeit (in Metern pro Sekunde) sowie die Fallzeit (in Sekunden) eingetragen werden.
Dazu sollen zunächst die Daten für Gesamtfallzeit (in Sekunden), die Masse m des Jumpers (in kg) und die Schrittweit sw (d.h. alle wie viele Sekunden ein Wert in die Tabelle eingetragen wird) vom Nutzer per Inputbox abgefragt werden.
Die eingegebenen Werte sollen auf Plausibilität geprüft werden, dabei soll der Nutzer bei folgenden Bedingungen zur Neueingabe des jeweiligen Wertes aufgefordert werden:
Gesamtdauer Tges <=0 bzw. Tges>100s
Schrittweite sw <=0 s bzw Anzahl sich ergebende Schritte / Einträge > 100
Verwenden Sie für diese Kontrolle der Werte jeweils Do/Loop-Schleifen, alle Werte sollen Double-Zahlen sein, d.h. Gleitkommazahlen sind erlaubt.
Anschließend soll die Tabelle mit Hilfe einer For-Schleife erstellt werden:
Als erstes sollen die Überschriften von Ihrer Prozedur erzeugt werden.
Dann sollen vom Programm die Spalten ausgefüllt werden. In die erste Spalte soll dabei die verstrichene Zeit (beginnend mit t=0) in Sekunden eingetragen werden. In die zweite Spalte die Fallgeschwindigkeit (m/s) zum jeweiligen Zeitpunkt, in die dritte Spalte die bis zu diesem Zeitpunkt zurückgelegte Strecke (m).
Die Tabelle soll bis zu den eingebenen Werten Tges=10 s , sw=0,2 sowie m = 80 kg gehen.
Zu verwendende Konstanten und Gleichungen:
Erdbeschleunigung g= 9,81m/s²
Luftwiderstandsbeiwert cw= 0,5
Luftdichte rho= 1,2 kg/m³
wirksame Fläche des Springers A= 0,5m²
Endgeschwindigkeit (m/s) ve= ( 2 * m *g / cw * rho * A ) ) ^ ( 1 / 2 )
Geschwindigkeit (m/s) v(t) = ve * Tanh ( t * g / ve )
zurückgelegte Strecke (m) s(t)= ve² / g * Ln (Cosh ( t * g / ve ) )
Hinweis:
Aufruf der Funktionen Tanh , Cosh sowie Ln über folgende Befehle:
Application.WorksheetFunction.Tanh(...)
Application.WorksheetFunction.Cosh(...)
Application.WorksheetFunction.Ln(...)
Erzeugte Tabelle für die Werte Tges=10 sw= 0,2 sowie m = 80 kg
Zusatz Augaben:
a) Erläutern Sie wie sie das Problem „Gleitkommazahlen in Schleifen“ gelöst haben.
b) Sowenig wie möglich Programmzeilen verwenden und erläutern.
Mein Code:
Option Explicit
Public Sub ExtremBasejumper()
Dim Tges As Double, m As Double, sw As Double, I As Integer, erg As Integer, ve As Double
Do
Tges = InputBox("Hier bitte Gesamtfallzeit in Sekunden eingeben")
Loop While Tges <= 0 Or Tges > 100
m = InputBox("Hier bitte Masse des Jumpers in Kilogramm eingeben")
Do
sw = InputBox("Hier bitte die Fallgeschwindigkeit in Meter pro Sekunde eingeben")
If sw = 0 Then
sw = -1
End If
Loop While sw <= 0 Or 100 < Tges / sw
erg = Tges / sw + 1
ve = (2 * m * 9.81 / (0.5 * 1.2 * 0.5)) ^ (1 / 2)
Cells.Clear
Cells(1, 1) = "Fallzeit[s]"
Cells(1, 2) = "Fallgeschwindigkeit[m/s]"
Cells(1, 3) = "Fallstrecke[m]"
For I = 1 To erg
Cells(I + 1, 1) = (I - 1) * sw
Cells(I + 1, 2) =
Next I
End Sub
Mein Problem:
Ich kommen an an der Stelle Cells(I + 1, 2) = mit der Einbindung der Formel für die Geschwindigkeit (m/s) nicht weiter da ich die funktionsweise der Application.WorksheetFunction.Tanh(...) nicht verstehe. Ersetze ich in der Formel für Geschwindigkeit (m/s) das Tahn dann erhalte ich immer die Fehlermeldung das mir Argumente fehlen.
Ausserdem weiß ich nicht wie ich das Problem der Gleitkommazahlen in Schleifen löse.
Kann mir jemand bitte bei meinen Fragen weiterhelfen? Bzw. mir erklären wie Application.WorksheetFunction.Tanh(...) funktioniert oder mir tipps geben wie ich das Programm kürzen kann?
Danke im voraus!
Luftdichte
Luftdichte
|