Thread Probleme mit mehrdimensionalen Arrays (18 answers)
Opened by eXpli at 2011-01-07 10:27

Linuxer
 2011-01-07 16:04
#144190 #144190
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hi,

ein 3D-Array musst Du auch in drei Ebenen abarbeiten, mit my @foos = map { sum @$_ } @$feld; werden aber nur 2 Ebenen verarbeitet.

Ausserdem sollte es @feld heissen, nicht @$feld; Schließlich geht es um einen "echten" Array, nicht um eine Array Referenz.

Wenn etwas nicht funktioniert, gibt es oftmals Warnungen oder Fehlermeldungen. Wie lauten diese?
Ansonsten kann man immer noch beschreiben, was man erwartet, was passieren soll, und was dann effektiv passiert (bzw. welches Resultat man erwartet und welches man bekommt).

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
my $total;
for my $x (0,1){
        for my $y (0,1){
                for my $z (0,1){
                        $total += $feld[$x][$y][$z];
                }
        }
}
print $total;


Drei Schleifen für drei Ebenen ist schon mal gut. Das 0,1 stellt eine Liste aus 2 Elementen dar, das erste Element ist die 0, das zweite die 1.
Das ist etwas suboptimal, weil die Anzahl der Elemente hart kodiert ist. Sobald ein Array mehr Elemente enthält, werden die zusätzlichen Elemente nicht mehr ausgewertet.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
my $total;
# setze x auf den ersten bis letzten Index des aeusseren Array
for my $x ( 0 .. $#feld ){

        # setze y auf den ersten bis letzten Index des Array in zweiter Ebene
        for my $y ( 0 .. $#{$feld[$x]} ){

                # setze z auf den ersten bis letzten Index des Array in dritter Ebene
                for my $z ( 0 .. $#{ $feld[$x]->[$y] } ){

                        # x ist echtes Feld, daher ohne Pfeil
                        # für y und z muss dereferenziert werden, daher mit Pfeil
                        $total += $feld[$x]->[$y]->[$z];
                }
        }
}
print $total;


Code ungetestet, weil quick hack.

edit: code comments changed; leerzeilen spendiert.
Last edited: 2011-01-07 16:13:54 +0100 (CET)
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Probleme mit mehrdimensionalen Arrays