_ArraySort

  • Hey Leute

    ich habe mal eine Frage zu meinem Lottoprogramm...

    Es sollen Zufallszahlen erzeugt werden und dann sortiert wieder ausgegeben werden.

    Die Funktion _ArraySort macht mir jedoch Probleme.

    Es wird immer nur die letzte Spalte des Arrays sortiert.

    Ich hoffe Ihr könnt mir helfen.

    Danke

    DFPWare

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <Array.au3>
    GUICreate("LOTTO",320,480)
    GUICtrlCreateLabel("Lotto [1 aus 49]",120,30)
    GUICtrlCreateLabel("Anzahl der Tipps",10,80)
    $input = GUICtrlCreateInput("",100,80,100)
    $lotto = GUICtrlCreateButton("Tipp",210,78,100)
    $liste = GUICtrlCreateListView("A|B|C|D|E|F",10,110,300,300)
    $beenden = GUICtrlCreateButton("Beenden",120,430,100)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $lotto
    $anzahl = GUICtrlRead($input)
    Dim $array[6][$anzahl]
    For $i = 0 To $anzahl-1 Step 1
    For $p = 0 To 5 Step 1
    $array[$p][$i] = Random(1,49,1)
    Next
    If $array[0][$i] <> $array[1][$i] And $array[0][$i] <> $array[2][$i] And $array[0][$i] <> $array[3][$i] And $array[0][$i] <> $array[4][$i] And $array[0][$i] <> $array[5][$i] And $array[1][$i] <> $array[2][$i] And $array[1][$i] <> $array[3][$i] And $array[1][$i] <> $array[4][$i] And $array[1][$i] <> $array[5][$i] And $array[2][$i] <> $array[3][$i] And $array[2][$i] <> $array[4][$i] And $array[2][$i] <> $array[5][$i] And $array[3][$i] <> $array[4][$i] And $array[3][$i] <> $array[5][$i] And $array[4][$i] <> $array[5][$i] Then ContinueLoop
    Else
    $i -= 1
    EndIf
    Next
    Case $beenden
    _ArrayDisplay($array)
    For $k = 0 To $anzahl-1 Step 1
    _ArraySort($array,0,0,0,$k)
    Next
    _ArrayDisplay($array)
    EndSwitch
    WEnd

    [/autoit]
  • Hi,
    das liegt daran das bei Array Sort eine Master Spalte festgelegt wird und immer alle Items nach der Masterspalte Spalte sortiert werden.


    So funktioniert es wie du willst:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstants.au3>
    #include <Array.au3>
    GUICreate("LOTTO", 320, 480)
    GUICtrlCreateLabel("Lotto [1 aus 49]", 120, 30)
    GUICtrlCreateLabel("Anzahl der Tipps", 10, 80)
    $input = GUICtrlCreateInput("", 100, 80, 100)
    $lotto = GUICtrlCreateButton("Tipp", 210, 78, 100)
    $liste = GUICtrlCreateListView("A|B|C|D|E|F", 10, 110, 300, 300)
    $beenden = GUICtrlCreateButton("Beenden", 120, 430, 100)
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $lotto
    $anzahl = GUICtrlRead($input)
    Dim $array[6][$anzahl]
    For $i = 0 To $anzahl - 1 Step 1
    For $p = 0 To 5 Step 1
    $array[$p][$i] = Random(1, 49, 1)
    Next
    If $array[0][$i] <> $array[1][$i] And $array[0][$i] <> $array[2][$i] And $array[0][$i] <> $array[3][$i] And $array[0][$i] <> $array[4][$i] _
    And $array[0][$i] <> $array[5][$i] And $array[1][$i] <> $array[2][$i] And $array[1][$i] <> $array[3][$i] And $array[1][$i] <> $array[4][$i] _
    And $array[1][$i] <> $array[5][$i] And $array[2][$i] <> $array[3][$i] And $array[2][$i] <> $array[4][$i] And $array[2][$i] <> $array[5][$i] _
    And $array[3][$i] <> $array[4][$i] And $array[3][$i] <> $array[5][$i] And $array[4][$i] <> $array[5][$i] Then
    ContinueLoop
    Else
    $i -= 1
    EndIf
    Next
    Case $beenden
    Dim $aSimpleArray[UBound($array)]
    _ArrayDisplay($array)
    For $k = 0 To $anzahl - 1 Step 1
    For $x = 0 To UBound($aSimpleArray) - 1
    $aSimpleArray[$x] = $array[$x][$k]
    Next

    [/autoit] [autoit][/autoit] [autoit]

    _ArraySort($aSimpleArray)
    For $x = 0 To UBound($aSimpleArray) - 1
    $array[$x][$k] = $aSimpleArray[$x]
    Next
    Next
    _ArrayDisplay($array)
    EndSwitch
    WEnd

    [/autoit]