Thread Probleme mit mehrdimensionalen Arrays
(18 answers)
Opened by eXpli at 2011-01-07 10:27
(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"; |