#!/usr/local/bin/perl -w # Perl-kurssi 81389-4, Helsingin yliopisto/Tietojenkäsittelytieteen laitos # 1. harjoitustyö: Aihe 4, Yksinkertainen tilasto-ohjelma # Launo Tuuri, 3.10.1999 use strict; package main; my @luvut; my ($summa, $ka); # Laske järjestetystä taulukosta sub mediaani { my $i = int( $#{$_[0]} / 2 ) + 1; # keskikohta if (($#{$_[0]} % 2) == 0) # alkioitten lkm pariton? { return $_[0]->[$i]; # keskimmäinen } else # keskimmäisten keskiarvo { return ( $_[0]->[$i-1] + $_[0]->[$i] ) / 2; } } # Laske järjestetystä taulukosta otoskeskihajonta sub keskih { my $su = 0; foreach my $lu ( @{$_[0]} ) { $su += ($lu - $_[1]) ** 2; } $su /= $#{$_[0]}; return sqrt $su; } # Talleta stdin:istä virtaavat luvut taulukkoon ja laske summaa $summa = 0; while (<>) { chomp; push @luvut, $_; $summa += $_; } # Järjestä numeerisesti @luvut = sort { $a <=> $b } @luvut; # Keskiarvo $ka = $summa / ($#luvut + 1); # Tulokset print $luvut[0], "\n", $luvut[-1], "\n"; # minimi ja maksimi printf "%.3f\n", $ka; # aritmeettinen keskiarvo printf "%.3f\n", mediaani(\@luvut); # mediaani printf "%.3f\n", keskih(\@luvut, $ka); # otoskeskihajonta