Array für Beginner

  • Also mein zweidimensionales 5x5 Arry schaut wie folgt aus:

    Spoiler anzeigen
    [autoit]


    beispiel[5][5] = {{00,01,02,03,04},
    {10,11,12,13,14},
    {20,21,22,23,24},
    {30,31,32,33,34},
    {40,41,42,43,44}}

    [/autoit]


    beispiel[3][1] = 31

    Aber wie ... :

    1.) ... die Ausgabe in eine MsgBox?
    2.) ... den Wert von 31 z. B. auf 37 abändern?

    So, nun mal warten und dann lernen. ;)

    Danke für das antworten schon hier & jetzt.

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    • Offizieller Beitrag

    Erstmal das Array richtig deklarieren ;)

    [autoit]

    Local $beispiel[5][5] = [[00,01,02,03,04], _
    [10,11,12,13,14], _
    [20,21,22,23,24], _
    [30,31,32,33,34], _
    [40,41,42,43,44]]

    $beispiel[3][1] = 31

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

    ; 1.) ... die Ausgabe in eine MsgBox?
    MsgBox(0, '', $beispiel[3][1])

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

    ; 2.) ... den Wert von 31 z. B. auf 37 abändern?
    $beispiel[3][1] = 37

    [/autoit]
  • Hallo BugFix.

    das ist ja schon mal seeeeehr gut.

    Nun die Frage 3a & b) ;)

    Wie würde ich die 25 Zahlen, wenn sie in eine Textdatei untereinander stehen in das 5x5 Array einlesen, wie wenn sie nebeneinander stehen?

    Ich muß doch endlich mal Arrays richtig verstehen und damit auch arbeiten. Also, Lina muß lernen !!!

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • So ungefähr ;D

    [autoit]

    #include <array.au3>

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

    ;Für die Zahlen.txt
    For $i = 1 to 25
    FileWrite("blubbstar.txt", Random(10, 99, 1) & @CRLF)
    Next

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

    Global $line = 1, $array[6][6]

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

    For $i = 1 to 5
    For $j = 1 to 5
    $array[$i][$j] = FileReadLine("blubbstar.txt", $line)
    $line += 1
    Next
    Next

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

    _ArrayDisplay($array)

    [/autoit]
    • Offizieller Beitrag

    Oder so (Antwort auf beide Fragen):

    [autoit]


    #include <array.au3>

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

    For $i = 1 to 25
    FileWrite("test1.txt", Random(10, 99, 1) & @CRLF)
    Next
    $File = StringTrimRight(FileRead("test1.txt"), 2)
    $array = StringSplit($File, @CRLF, 1)

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

    _ArrayDisplay($array)

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

    For $i = 1 to 25
    FileWrite("test2.txt", Random(10, 99, 1) & ", ")
    Next
    $File = StringTrimRight(FileRead("test2.txt"), 2)
    $array = StringSplit($File, ", ", 1)

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

    _ArrayDisplay($array)

    [/autoit]
  • Hallo.

    Ui, ich glaube ich habe Array vom Aufbau her verstanden.

    Ich stelle mir einfach einen Würfel vor.
    Die vorderste Reihe eines Würfels die ich komplett sehe ist die X-Achse.
    Die Reihen nach hinten weg sind die Werte der Y-Achse.
    Die Reihen / Schichten übereinander sind die Werte der Z-Achse.

    Also wenn ich es nun richtig verstanden habe wird ein 3-D Array so aussehen: [X][Y][Z].
    contest.zip
    Wenn es ein Würfel aus 10x10x10 Feldern (kleine Würfel) ist, so ist das Feld in der 1. Reihe ganz links in der 1.Schicht das Array [0][0][0],
    das Feld in der letzten Reihe, ganz rechts in der obersten Schicht dementsprechend das Array [9][9][9].

    So, nun bin ich mal gespannt, was dazu für Aussagen von euch kommen ;)

    Ich möchte unbedingt Array verstehen udn anwenden können. Da bin ich sturrrrr zu mir selber. ;)

    LG,
    Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

    Einmal editiert, zuletzt von Crazy-A (25. Oktober 2008 um 14:22)

  • Vielleicht hilft dir diese Erklärung:

    Stell dir ein Array als Adresse vor. (und jedes Haus als Variable)


    Spoiler anzeigen


    Angenommen, es gibt auf der Welt nur 5 Häuser, dann reicht ein 1D Array ;)
    $Adresse[1]=Hausnummer 1
    $Adresse[2]=Hausnummer 2
    $Adresse[3]=Hausnummer 3
    $Adresse[4]=Hausnummer 4
    $Adresse[5]=Hausnummer 5


    Nun gbt es 3 Dörfer mit jeweils 5 Häusern - 2D Array
    $Adresse[1][1]=Dorf1-Hausnummer 1
    $Adresse[1][2]=Dorf1-Hausnummer 2
    $Adresse[1][3]=Dorf1-Hausnummer 3
    $Adresse[1][4]=Dorf1-Hausnummer 4
    $Adresse[1][5]=Dorf1-Hausnummer 5

    $Adresse[2][1]=Dorf2-Hausnummer 1
    $Adresse[2][2]=Dorf2-Hausnummer 2
    $Adresse[2][3]=Dorf2-Hausnummer 3
    $Adresse[2][4]=Dorf2-Hausnummer 4
    $Adresse[2][5]=Dorf2-Hausnummer 5

    $Adresse[3][1]=Dorf3-Hausnummer 1
    $Adresse[3][2]=Dorf3-Hausnummer 2
    $Adresse[3][3]=Dorf3-Hausnummer 3
    $Adresse[3][4]=Dorf3-Hausnummer 4
    $Adresse[3][5]=Dorf3-Hausnummer 5


    Und schließlich haben wir 2 Kontinente mit jeweils 3 Dörfern/5 Häuser:
    $Adresse[1][1][1]=Kontinent1-Dorf1-Hausnummer 1
    $Adresse[1][1][2]=Kontinent1-Dorf1-Hausnummer 2
    $Adresse[1][1][3]=Kontinent1-Dorf1-Hausnummer 3
    $Adresse[1][1][4]=Kontinent1-Dorf1-Hausnummer 4
    $Adresse[1][1][5]=Kontinent1-Dorf1-Hausnummer 5

    $Adresse[1][2][1]=Kontinent1-Dorf2-Hausnummer 1
    $Adresse[1][2][2]=Kontinent1-Dorf2-Hausnummer 2
    $Adresse[1][2][3]=Kontinent1-Dorf2-Hausnummer 3
    $Adresse[1][2][4]=Kontinent1-Dorf2-Hausnummer 4
    $Adresse[1][2][5]=Kontinent1-Dorf2-Hausnummer 5

    $Adresse[1][3][1]=Kontinent1-Dorf3-Hausnummer 1
    $Adresse[1][3][2]=Kontinent1-Dorf3-Hausnummer 2
    $Adresse[1][3][3]=Kontinent1-Dorf3-Hausnummer 3
    $Adresse[1][3][4]=Kontinent1-Dorf3-Hausnummer 4
    $Adresse[1][3][5]=Kontinent1-Dorf3-Hausnummer 5


    $Adresse[2][1][1]=Kontinent2-Dorf1-Hausnummer 1
    $Adresse[2][1][2]=Kontinent2-Dorf1-Hausnummer 2
    $Adresse[2][1][3]=Kontinent2-Dorf1-Hausnummer 3
    $Adresse[2][1][4]=Kontinent2-Dorf1-Hausnummer 4
    $Adresse[2][1][5]=Kontinent2-Dorf1-Hausnummer 5

    $Adresse[2][2][1]=Kontinent2-Dorf2-Hausnummer 1
    $Adresse[2][2][2]=Kontinent2-Dorf2-Hausnummer 2
    $Adresse[2][2][3]=Kontinent2-Dorf2-Hausnummer 3
    $Adresse[2][2][4]=Kontinent2-Dorf2-Hausnummer 4
    $Adresse[2][2][5]=Kontinent2-Dorf2-Hausnummer 5

    $Adresse[2][3][1]=Kontinent2-Dorf3-Hausnummer 1
    $Adresse[2][3][2]=Kontinent2-Dorf3-Hausnummer 2
    $Adresse[2][3][3]=Kontinent2-Dorf3-Hausnummer 3
    $Adresse[2][3][4]=Kontinent2-Dorf3-Hausnummer 4
    $Adresse[2][3][5]=Kontinent2-Dorf3-Hausnummer 5

    lgE

    • Offizieller Beitrag

    Ich finde immer den Tabellenvergleich recht verständlich:
    1D-Array - Ein Blatt Papier mit einer einspaltigen Tabelle
    2D-Array - Ein Blatt Papier mit einer mehrspaltigen Tabelle
    3D-Array - Mehrere übereinanderliegende Blatt Papier mit jeweils einer mehrspaltigen Tabelle

    Wobei der Rubik's Würfel schon ideal ist um diese Vorstellung auch plastisch zu bekommen.
    Mit dem Unterschied allerdings, dass die Anzahl der Elemente in den einzelnen Dimensionen nicht symmetrisch sein muß.

  • eukalyptus & BugFix .

    Jetzt die Frage, die fügt man den Neubau (neues Haus) hinzu?
    Wie ließt man die Daten aus einem Haus?

    Wir bringen allen noch die Arrays bei und ich lerne auch dabei gaaaaanz viel.

    LG,
    Alina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • So, hab mal versucht, die Array grafisch mit "Adresse" darzustellen: (PDF)
    //Edit: Beim 1D-Array soll das nicht [1][1][2]... sondern [0][1][2]... sein ;)
    //Edit2: Beim 3D-Array muss das erste links oben nicht 0-1-0 sein sondern 0-0-0 :(

    //Edit 3: Fehler gefixed
    Vorher: 20 Downloads

    2 Mal editiert, zuletzt von progandy (29. Oktober 2008 um 14:29)

  • Nochn Beispiel:

    Du hast einen Kasten Bier (1D-Array):
    $Bier[1]=1 Flasche
    $Bier[2]=2 Flasche
    ...
    $Bier[20]=20 Flasche


    Nun hast du einen Kühlschrank mit 5 Fächern, auf die jeweils 20 Flaschen Bier passen (2D-Array):
    $Bier[1][1]=1 Fach, 1 Flasche
    $Bier[2][1]=2 Fach, 1 Flasche
    $Bier[5][20]=5 Fach, 20 Flasche


    Auf Grund deines enormen Bierkonsums, besorgst du dir noch 2 Kühlschränke (3D-Array):
    $Bier[1][1][1]=1 Kühlschrank, 1 Fach, 1 Flasche
    $Bier[2][3][15]=2 Kühlschrank, 3 Fach, 15 Flasche
    $Bier[3][5][20]=3 Kühlschrank, 5 Fach, 20 Flasche


    So, nun wollen wir die Kühlschränke mal befüllen:
    In den ersten Kühlschrank gebe ich ins 2 Fach an 7 Stelle ein Paulaner $Bier[1][2][7]="Paulaner"
    2 Kühlschrank, 4 Fach an 12 Stelle kommt ein Becks $Bier[2][4][12]="Becks" usw...

    Wenn ich nun das Paulaner trinken will, nehme ich das $Bier[1][2][7]
    MsgBox(0,"1 Kühlschrank 2 Fach 7 Flasche",$Bier[1][2][7])
    Alles klar? ;)

    lgE

    Edit: In Wirklichkeit trinke ich aber grad ein Wieselburger - Bin ja Österreicher :D

    • Offizieller Beitrag

    Und in die Kühlschrantür kommt ein Computerbaustein, auf dem die folgende Routine läuft:

    [autoit]

    Switch _GetStatusBier($arBier)
    Case 0
    MsgBox(0, 'NOTFALL', 'MAMA, GEH MA BIER HOLEN - ABA ZACKICH!!')
    Case 1 To 5
    MsgBox(0, 'ÄRGERNIS',"Mama, holst mal schnell paar Bier? - Kannst dir auch 'nen Schokoriegel mitbringen.")
    Case 6 To 10
    MsgBox(0, 'REICHT NOCH', "Liebling, wenn du morgen am Getränkeshop vorbeifährst, bringst mal bitte 'ne Kiste Bier mit?" & @LF & _
    "Wir machen uns auch mal 'nen schönen Fernsehabend.")
    Case 11 To 20
    MsgBox(0, 'OK', "Nachbar fragen, ob wir uns heut abend mal treffen.")
    Case Else
    MsgBox(0, 'PARTY?', "Ma gucken, wer so kommen kann - wenn jeder noch was mitbringt reichts zum lustig feiern.")
    EndSwitch

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

    Func _GetStatusBier(ByRef $ARRAY)
    Local $anzahl = 0
    For $i = 0 To UBound($ARRAY) -1
    For $j = 0 To UBound($ARRAY, 2) -1
    For $k = 0 To UBound($ARRAY, 3) -1
    If ($ARRAY[$i][$j][$k] <> '') And _
    ($ARRAY[$i][$j][$k] <> 0) Then $anzahl += 1
    Next
    Next
    Next
    Return $anzahl
    EndFunc

    [/autoit]

    :rofl:

  • Moin Moin zusammen.

    ein wunderbarer Spätsommertag. ;)

    @progandy Ich meine, das bei 3D Array in der obersten "Schicht" ein Fehler ist. Da steht ganz links [0][1][0] und wenn ich den Aufbau richtig verstanden habe, müßte das doch [0][0][0] sein, oder? Erstens weil es logisch wäre und zweiten, was ich gerade noch entdeckt habe, steht sonst zwei mal [0][1][0] in dem 3D Array, was nicht erlaubt ist. Ich glaube das wäre sonst eine doppelte "Anschriftenvergabe", oder?

    LG,
    Alina.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    OuBVU5ebLhHu5QvlnAyQB4A7SzBrvWulwL7RLl2BdH5tI6sIYspeMKeXMSXl

  • Ja, da hast du recht... Irgendwie hat es das bei search&replace erstzt ...
    mach die PDF glaub nochmal