Huhu,
schonwieder ich.... .
Ich möchte mit Hilfe einer Subroutine alle Werte einer Liste herausfiltern die größer als der Durchschnitt sind.
Im Moment sieht die Routine so aus.
Wenn ich jetzt eine Liste z.b @test=(1..10) benutze erfolgt das richtige Ergebnis.
Bei einer Liste @test=(100 , 1..10) oder wenn ich die Subroutine mit &ueber_durschnitt (100, 1..10) aufrufe, erhalte ich als Ergebnis 1.
Hat von euch vllt jemand ne Ahnung was ich verbessern könnte?
Viele Grüße,
Heinz
Die Ausgabe, die Ausgabe die bei my @test = (100, 1..10); erzeugt wird ist
schonwieder ich.... .
Ich möchte mit Hilfe einer Subroutine alle Werte einer Liste herausfiltern die größer als der Durchschnitt sind.
Im Moment sieht die Routine so aus.
Code:
sub gesamt {
$summe = 0;
foreach my $zahl (@_) {
$summe += $zahl;
}
return $summe;
}
sub durchschnitt {
if (@_ == 0) {return}
my $laenge = @_;
my $summe = &gesamt(@_);
$summe/$laenge;
}
sub ueber_durchschnitt {
my @ergebnis;
$durch = &durchschnitt(@_);
print "Durchschnitt $durch \n";
foreach $vergl (@_) {
if ($vergl > $durch) {
push @ergebnis,$vergl;
}
}
return @ergebnis;
}
Wenn ich jetzt eine Liste z.b @test=(1..10) benutze erfolgt das richtige Ergebnis.
Bei einer Liste @test=(100 , 1..10) oder wenn ich die Subroutine mit &ueber_durschnitt (100, 1..10) aufrufe, erhalte ich als Ergebnis 1.
Hat von euch vllt jemand ne Ahnung was ich verbessern könnte?
Viele Grüße,
Heinz
Ergänzung ()
Die Ausgabe, die Ausgabe die bei my @test = (100, 1..10); erzeugt wird ist
Code:
Durchschnitt 14.0909090909091
Alles über Durchschnitt von 100 1 2 3 4 5 6 7 8 9 10 ist 1.
Zuletzt bearbeitet: