Perl :: Aufgabe #7

3 Lösungen Lösungen öffentlich

Übergabe von Array- Referenz an einer Subroutine

Anfänger - Perl von Gustl - 06.08.2012 um 23:06 Uhr
Erzeugen Sie eine Subroutine, die eine beliebige Zahl an Referenzen auf Arrays übernimmt, diese Arrays umkehrt und sie dann in der gleichen Reihenfolge, in der sie übernommen wurden, wieder zurückliefert.

Testen Sie die Subroutine mit einem Aufruf mit mindestens 4 Array-Referenzen.

Lösungen:

1x
vote_ok
von bianca (140 Punkte) - 10.08.2012 um 06:02 Uhr
Quellcode ausblenden Perl-Code
#!/usr/bin/perl
use strict;
use warnings;

my @arr1 = ('1','2','3','4');
my @arr2 = ('a','b','c','d');
my @arr3 = ('I','II','III','IV');
my @arr4 = ('*','**','***','****');
print "1: @arr1\n2: @arr2\n3: @arr3\n4: @arr4\n\n\n";
test(\@arr1,\@arr2,\@arr3,\@arr4);
print "1: @arr1\n2: @arr2\n3: @arr3\n4: @arr4\n";

sub test {
	for my $z (0..scalar @_-1) {
		@{$_[$z]} = reverse(@{$_[$z]});
	}
}
1x
vote_ok
von progdoc (2220 Punkte) - 12.08.2012 um 01:21 Uhr
Quellcode ausblenden Perl-Code
#!/usr/bin/perl
use strict ;
use warnings ;

sub reverse_arrays {
   my @returned ;
   foreach my $arrayref ( @_ ) {
      @{$arrayref} = reverse @{$arrayref} ;
      push ( @returned , $arrayref ) ;
   }
   return @returned ;
}

my @cities = ( "Athen" , "Belgrad" , "Berlin" ) ;
my @countries = ( "Griechenland" , "Serbien" , "Deutschland" ) ;
my @numbers = 1..15 ;
my @letters = 'a'..'f' ;
my @reversed = reverse_arrays( \@cities , \@countries , \@numbers ,
      \@letters ) ;
foreach my $arrayref ( @reversed ) {
   map { print "$_\n" } @{$arrayref} ;
}
vote_ok
von Gustl (6560 Punkte) - 25.06.2013 um 20:41 Uhr
Ich habe die übergebenen Referenzen geändert, ohne Rückgabe.
Quellcode ausblenden Perl-Code
#!/usr/bin/perl
use strict;
use warnings;
 
my @array1 = (1,2,3,4,5,6,7,8,9,10);
my @array2 = (10,20,30,40,50,60,70,80,90,100);
my @array3 = (100,200,300,400,500,600,700,800,900,1000);
my @array4 = (1000,2000,3000,4000,5000,6000,7000,8000,9000,10000);

reverse_all_arrays(\@array1, \@array2, \@array3, \@array4);

foreach(@array2){ print $_."\n" };

sub reverse_all_arrays{
    @$_ = reverse @$_ for @_;
}
2085075

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.