Problemstellung:
Für 32Bit und 64Bit Office Versionen
In einem 100m Rennen treten 8 Läufer an.
Es geht um Gold, Silber und Bronze.
Wieviele Möglichkeiten der Belegung der Plätze 1-3 gibt es?
Voraussetzungen:
Das Bsp ist ab A00 lauffähig.
Zuerst benötigen wir gesamte Anzahl der Möglichkeiten.
Die Fakultät (math. Zeichen !) ist das Produkt der natürlichen Zahlen von 1 bis n definiert.
Es sind nur positive Ganzzahlen möglich. Werte über 170 können mit VB(A) nicht berechnet werden.
Mathematische Formel:
Public Function Fakultaet(ByVal intN As Integer) As Variant Dim dblFakultaet As Double Dim lngZaehler As Long On Error Resume Next dblFakultaet = 1 For lngZaehler = 1 To intN dblFakultaet = dblFakultaet * lngZaehler Next lngZaehler If Err = False Then Fakultaet = dblFakultaet Else Fakultaet = "Fehler!" Err.Clear End If On Error GoTo 0 End Function
1*2*3*4*5*6*7*8=40320
Möglichkeiten
Public Function Variation(iAllElements As Integer, iSelectElements As Integer) As Long Dim nFakultaet As Long Dim nElemente As Long nFakultaet = Fakultaet(iAllElements) nElemente = Fakultaet(iAllElements - iSelectElements) Variation = nFakultaet / nElemente End Function
Private Sub cmd_CreatePermut_Click() Dim i As Long, j As Long, k As Long Dim TmpSArray() As String Dim sTmp As String, sResult As String Me.Text1 = Null If Me.txt_Tiefe = 0 Or IsNull(Me.txt_Tiefe) Then Me.txt_Tiefe = 3 txt_CountVari = Variation(8, Me.txt_Tiefe) For i = 1 To Me.txt_Tiefe sTmp = PermutateString(1, i, "Beier|Büttner|Heinze|Kunze|Müller|Schmidt|Mayer|Dietze") Next i TmpSArray = Split(sTmp, "|", , vbTextCompare) k = 0 For j = LBound(TmpSArray) To UBound(TmpSArray) If TmpSArray(j) <> "" Then k = k + 1 sResult = sResult & "[" & k & "] " & TmpSArray(j) & vbNewLine End If Next j Me.Text1 = sResult End Sub
Für 32Bit und 64Bit Office Versionen
Arbeiten mit Fakultät, Variationen und Permutationen
ab A00
Die Zip-Datei enthält eine Version ab A00
Ähnliche Artikel
Weiterlesen...