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

topeg
 2011-01-07 15:46
#144183 #144183
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
(0,1) entspricht hier (0..1) was hier gleichbedeutend mit (0..$#feld) ist.
Es ist die Liste aller Arrayindices.

Zu deinem Problem:
Du hast drei ineinander geschachtelte Arrays. Also musst du bei einer Summe auch alle Drei Arrays aufsummieren:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
use List::Util qw(sum);

my @feld=(
        [
                [1,2],
                [3,4],
        ],
        [
                [5,6],
                [7,8],
        ],
);

# das Konstrukt ausgeben
#print Dumper(\@feld);

# alle Felder durchgehen

my $total;
for my $x (0..$#feld){
        for my $y (0..$#{$feld[$x]}){
                for my $z (0..$#{$feld[$x][$y]}){
                        $total += $feld[$x][$y][$z];
                }
        }
}
print "$total\n";

# alternativ ohne Index,
# indem über die Arrays direkt iteriert wird:

my $all;
for my $x (@feld){
        for my $y (@$x){
                for my $z (@$y){
                        $all += $z;
                }
        }
}
print "$all\n";

# das kann man auch mit map schreiben:
my $summe=0;
map {
  map{
    map{
      $summe+=$_
    } @$_
  } @$_
} @feld;
print "$summe\n";

# oder über sum und map:
my $sum = sum map {
            sum map{
              sum(@$_)
            } @$_
          } @feld;

print "$sum\n";

View full thread Probleme mit mehrdimensionalen Arrays