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
2102172

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.