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

topeg
 2011-01-07 11:16
#144165 #144165
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
2011-01-07T09:27:08 eXpli
Ich möchte ein 3D-Array erstellen (erstmal statisch).

Code (perl): (dl )
1
2
3
4
5
6
7
#!usr/bin/perl -w

@Z1=(2, 2, 2);
@Z2=(2, 2, 2);
@Z3=(2, 2, 2);

@A=(\@Z1, \@Z2, \@Z3);

Das lässt sich kürzer schreiben:
Code (perl): (dl )
1
2
3
4
5
6
7
8
#!usr/bin/perl -w
use strict;

my @A=(
    [2, 2, 2],
    [2, 2, 2],
    [2, 2, 2],
  );


Gewöhne es dir gleich an auch "strict" zu nutzen, das erzwingt unter anderem das Iniatlisieren Deklarieren von Variablen.

2011-01-07T09:27:08 eXpli
So wie ist es verstanden habe kann man nicht wie in anderen Sprachen weil Perl die Arrays hintereinander packt.
Deshalb dieser Umweg mit den Referenzen von @Z1, @Z2 und @Z3 im @A.

Auch in andren Sprachen benutzt man Referenzen, nur werden sie vor dem Programmierer versteckt. Das ergibt dann ganz andere Verständnisprobleme.


2011-01-07T09:27:08 eXpli
Kann ich denn jetzt irgendwie zur Übung die einzelnen Einträge summieren?

Meine Idee:
Code (perl): (dl )
1
2
3
4
foreach (@A) {
  $sum+=$_;
}
print "$sum\n"; #sum=77009052

Wie man schon sehen kann ist das Ergebnis alles andere als richtig.


Nun du hast eine Array in das Arrays drin sind. Auf die inneren Array musst du Zugreifen.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
#!usr/bin/perl -w
use strict;

my @A=(
    [2, 2, 2],
    [2, 2, 2],
    [2, 2, 2],
  );

print $A[0]->[0]."\n"

Wie du siehst wird nun "2" aus dem ersten Eintrag des ersten Arrays in "@A" ausgeben. Man kann natürlich auch darüber itterieren:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!usr/bin/perl -w
use strict;

my @A=(
    [2, 2, 2],
    [2, 2, 2],
    [2, 2, 2],
  );

for my $arrayref (@A)
{
  my @B=@$arrayref;
  for my $zahl (@B)
  {
    print $zahl." ";
  }
  print "\n"
}


Ließ dir dazu am besten man Wiki:perlreftut und Wiki:perlref durch.

Edit: Deklarieren nicht Initialisieren.
Last edited: 2011-01-07 16:04:24 +0100 (CET)

View full thread Probleme mit mehrdimensionalen Arrays