Posts mit dem Label unterfunktion werden angezeigt. Alle Posts anzeigen
Posts mit dem Label unterfunktion werden angezeigt. Alle Posts anzeigen

Dienstag, 27. April 2010

S69/3 - Unterfunktion fuer alle Zahlen ueber dem Durchschnitt

Es wird ein Programm gesucht, dass alle Zahlen einer Liste ausgibt, die über dem Durchschnitt dieser Liste liegen. Es wird also angeraten, erstmal eine Funktion anzulegen, die diesen Durchschnitt berechnet. Danach können die einzelnen items der Liste mit diesem Durchschnitt abgeglichen werden.


#!/usr/bin/perl -w
# Ausgeben der Zahlen, die ueber dem Durchschnitt liegen
# http://perl-lernen.blogspot.com/

my @fred = above_average(100, 1..10);
print "\nFolgende Zahlen liegen ueber dem Durchschnitt von \@fred: @fred\n";

sub above_average
{
# Durchschnitt mittels Unterfunktion "average" ermitteln:
my $average = average( @_ );
print "\nDurchschnitt: $average";
foreach $x ( @_ ) {
if ( $x > $average ) {
push @above, $x;
}
}
return @above;
}

sub average
{
my $summe = 0;

foreach $zahl ( @_ ) {
$summe += $zahl;
}
my $durchschnitt = $summe/@_;
return $durchschnitt;
}

Sonntag, 14. Februar 2010

Subroutines - Taschenrechner als Übung zu Unterfunktionen

Subroutines oder Unterfunktionen sind sehr nützlich. Als erste Übung habe ich einen einfachen Taschenrechner programmiert.


#!/usr/bin/perl
# Taschenrechner by Christian!
print "Bitte Zahl eingeben: ";
chomp($zahl1 = );
print "Rechenart eingeben (+,-,/,*)";
chomp($rechenart = );
print "Zweite Zahl eingeben: ";
chomp($zahl2 = );

if($rechenart eq '+') {
print "\nAddition wird durchgefuehrt.\n";
$ergebnis = &addition($zahl1, $zahl2);
}
elsif($rechenart eq '-') {
print "\nSubtraktion wird durchgeführt.\n";
$ergebnis = &subtraktion($zahl1, $zahl2);
}
elsif($rechenart eq '*') {
print "\nMultiplikation wird durchgeführt.\n";
$ergebnis = &multi($zahl1, $zahl2);
}
elsif($rechenart eq 'x') {
print "\nMultiplikation wird durchgeführt.\n";
$ergebnis = &multi($zahl1, $zahl2);
}
elsif($rechenart eq '/') {
print "\nDivision wird durchgeführt.\n";
$ergebnis = &division($zahl1, $zahl2);
}
elsif($rechenart eq ':') {
print "\nDivision wird durchgeführt.\n";
$ergebnis = &division($zahl1, $zahl2);
}


sub addition {
($_[0] + $_[1]);
}
sub subtraktion {
($_[0] - $_[1]);
}
sub multi {
($_[0] * $_[1]);
}
sub division {
($_[0] / $_[1]);
}

print "Das Ergebnis Ihrer Rechnung: " . $ergebnis . "!!!\n";