2D-Array - [Zahlen setzen]

  • Hi Community,

    ich habe gerade das Problem, ein 2D-Array mit Zahlen zu füllen. Nehmen wir an ich habe folgende Zahlen so in einer Datei:

    Spoiler anzeigen

    >>> 24 x Spalten breit und 18 x Zeilen lang

    [autoit]


    999999999999999999999999
    922222222222222222222229
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    999999999999999999999999
    933333333333333333333339
    999999999999999999999999
    922222222222222222222229
    999999999999999999999999

    [/autoit]

    Nun möchte ich diese Zahlen genau so in ein 2D-Array schreiben. Mein Anfang:

    [autoit]


    #include <String.au3>
    #include <array.au3>

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

    Dim $array[18][24]
    $zahlencode = ; Zahlen von oben mit "Enter"
    $zahlencode_ol = StringReplace($zahlencode, @CRLF, "") ; Enter entfernen
    $zahlencode_so = StringSplit($zahlencode_ol, "") ; Alle Zahlen zerlegen - $zahlencode_so[0] enthält nun die Anzahl aller Zahlen - $zahlencode_so[1] die erste Zahl

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

    ; Hier mein Hauptproblem - das Befüllen der Variable - funktioniert noch nicht:

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

    For $i = 0 To 17
    For $k = 0 To 23
    If $zahlencode_so[($i * 24) + $k] = 9 Then
    $array[$i][$k] = 9
    EndIf
    Next
    Next

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

    _ArrayDisplay($array)

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

    Vielen Dank schonmal,
    lg Jautois

    Einmal editiert, zuletzt von Jautois (28. April 2009 um 14:28)

    • Offizieller Beitrag

    Meinst Du so:

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    #include <array.au3>

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

    Dim $array[18][24]
    $zahlencode = FileRead('zahlen.txt'); Zahlen von oben mit "Enter"
    $zahlencode_ol = StringReplace($zahlencode, @CRLF, "") ; Enter entfernen
    $zahlencode_so = StringSplit($zahlencode_ol, "", 2) ; <-- ",2" damit $zahlencode_so[0] die erste Zahl ist und nicht die Anzahl der Elemente

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

    For $i = 0 To 17
    For $k = 0 To 23
    If $zahlencode_so[($i * 24) + $k] = 9 Then
    $array[$i][$k] = 9
    EndIf
    Next
    Next

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

    _ArrayDisplay($array)

    [/autoit]
  • Hallo jautois,

    in der Lösung von Oscar erscheinen aber nur die 9'er in dem Array.
    Wenn Du alle Zahlen in Deinem Array haben willst, dann kannst Du das so lösen:

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include<file.au3>
    Dim $array[18][24]
    Global $zahlencode
    _FileReadToArray(@DesktopDir&'\zahlen.txt',$zahlencode); Zahlen von oben mit "Enter"
    For $i = 0 To $zahlencode[0]-1
    For $t = 0 To 23
    $array[$i][$t] = StringMid($zahlencode[$i+1],$t+1,1)
    Next
    Next
    _ArrayDisplay($array)

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Oscar ,

    ich dachte nur, weil er geschrieben hat:

    Zitat

    Nun möchte ich diese Zahlen genau so in ein 2D-Array schreiben. Mein Anfang:

    Ansonsten sorry,
    will nicht dazwischenfunken ;(

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Schnuffel: Vielen Dank für deine Mühe! Aber ich das Problem hatte sich nach Ocsar's Post erledigt. Sorry, wenn ich mich oben etwas "freiläufiger" geäußert habe.

    Zitat

    Ansonsten sorry,
    will nicht dazwischenfunken ;(

    Kein Grund sich hier für etwas entschuldigen zu müssen ;) Freut mich ja, wenn so gerne geholfen wird, also :thumbup:

    lgJautois