1 1 1 1 1 1 1 1 1 1 Rating 0.00 (0 Votes)

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.

Lösung:
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:
n!=1*2*3*4*...*n

In VBA gibt es zur Berechnung mehrere Lösungen, hier nur eine Möglichkeit
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
Für unser Bsp. ergäbe das also:
1*2*3*4*5*6*7*8=40320
Möglichkeiten
Jetzt wollten wir aber nur die Anzahl der Möglichkeiten haben mit denen die Plätze 1-3 belegt werden können.
Hier kommt dann die Variation zum Einsatz.
Mathematische Formel:
x=n!/(n-k)!
In VBA:
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
Für unser Bsp: x=40230/120=336
Also ergeben sich 336 Möglichkeiten bei 8 Läufern wie die Plazierung der Plätze 1-3 belegt sein können.
 
Jetzt möchte wir aber auch noch die Namen der Plazierten haben.
Somit kommen wir nun zur Permutation.
 
Den Code könnt Ihr der Bsp-DB entnehmen.
Der Aufruf sähe dann so aus:
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
Wir über geben der Funktion in diesem Fall die Anzahl der Plätze die wir haben wollen in unserem Fall=3
und die Namen="Beier|Büttner|Heinze|Kunze|Müller|Schmidt|Mayer|Dietze"
Als Trennzeichen bitte das Pipesymbol (|) verwenden.
Der Aufruf erstellt uns eine Liste mit den 336 Möglichkeiten der Belegung der Plätze 1-3
 
 
 
 
Dateien:

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

Datum 05.02.2018
Dateigröße 29.16 KB
Download 806
 
 
 

Ähnliche Artikel

You have no rights to post comments

Login Form

Neueste Artikel

SQL zu VBA Konverter
26. Oktober 2018
Problemstellung: Nur für 32Bit Office Versionen Gibt es eine Möglichkeit SQL-Code einer Abfrage so zu konvertieren das der Code in VBA genutzt werden kann? Lösung: Bis Access 2010 gibt das Tool...
1.png5.png7.png9.png2.png8.png4.png
Heute316
Gestern486
Diese Woche1633
Dieser Monat7907
Total1579284

  • IP: 3.235.154.65
  • Browser: Unknown
  • Version:
  • OS: Unknown

Online

2
Online

29. März 2024

Letzte Kommentare

  • Berechnen von Zeiträumen als Abfragekriterium

    elmard 02.02.2021 21:02
    1000 Dank
    für diese Datenbankanwendung! Eine sehr gute Umsetzung mit den vielen Möglichkeiten des Datums.

    Weiterlesen...

     
  • SQL zu VBA Konverter

    Tommy Admin 03.11.2019 16:33
    RE: SQL zu VBA Konverter
    Hallo Elmard, danke für die Info. :lol:

    Weiterlesen...

     
  • SQL zu VBA Konverter

    elmard 03.11.2019 14:49
    Bei SmartTools neue Version 4.0
    Dieses Tool liegt inzwischen in der Version 4 vor und läuft nun auch von A2013 und A2016 sowie im ...

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    TommyK 27.02.2019 06:52
    Workshop
    Hallo mpegjunkie, danke für Dein Feedback. Schön das Dir Workshop weiter hilft. :D

    Weiterlesen...

     
  • Workshop zur Benutzung des Multi-Column TreeView Control unter MS-Access

    mpegjunkie 26.02.2019 20:10
    Perfekter Workshop
    Hallo Tommy, perfekter Workshop, toll und umfassend erläutert. Jetzt nutze ich diese Controls auch.

    Weiterlesen...