Perl :: Aufgabe #3 :: Lösung #2

5 Lösungen Lösungen öffentlich
#3

Schnittmenge von 2 Arrays

Anfänger - Perl von Gustl - 06.08.2012 um 22:46 Uhr
Schreiben Sie ein Skript, das Sie auffordert 2 Integer-Arrays einzugeben. Aus diesen 2 Arrays soll dann ein drittes Array erzeugt werden, das nur die Elemente enthält, die in beiden Arrays vorkommen. Also die Schnittlänge dieser beiden Arrays.
#2
vote_ok
von Jusy (440 Punkte) - 23.04.2014 um 13:41 Uhr
Quellcode ausblenden Perl-Code
use strict;

print "Bitte 1.Array eingeben (Zahlen durch Komma getrennt)";
my $eingabe1 = <STDIN>;
print "Bitte 2.Array eingeben (Zahlen durch Komma getrennt)";
my $eingabe2 = <STDIN>;

$eingabe1 =~ s/\s//;
$eingabe2 =~ s/\s//;

my @array1 = split(",",$eingabe1);
my @array2 = split(",",$eingabe2);
my (@sarray, @larray,@result) =();

if (length(@array1) >= length(@array2))
{
	@sarray = @array1;
	@larray = @array2;
}
else
{
	@sarray = @array2;
	@larray = @array1;
}
my $i = 0;
foreach my $zahl (@sarray)
{
	foreach(@larray)
	{
		if($_ == $zahl)
		{
			$result[$i] = $zahl;
			$i++;
			$_ = "X";
			last;
		}
	}
}


my %seen;
my @filtered = grep {!$seen{$_}++} @result;
print "\Schnittmenge:  ";
foreach(@filtered)
{
	print "$_, ";
}
print "\nHäufigkeit:  ";

my @final= ();
my $i;
foreach my $zahl(@filtered)
{
	my $count = 0;

	foreach(@result)
	{
		
		if($_ == $zahl)
		{
			$count++;
		}
	}
	@final[$i] = $count."x ".$zahl."; ";
	$i++;
}

foreach(@final)
{
	print "$_\t";
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben