Obliczanie ocen
Poniższy skrypt czyta oceny z pliku, wyszukuje wszystkie wyniki dla każdego studenta, oblicza jego średnią i wyświetla listę wyników w kolejności alfabetycznej. Program zakłada naiwnie, że w grupie nie ma, na przykład, dwóch Tomków, tzn. gdy znajdzie drugi wpis z imieniem Tomek, to założy, że jest to wynik drugiego egzaminu pierwszego napotkanego Tomka.Maciek 25 Bartek 76 Kaśka 49 Tomek 66 Krzysiek 92 Dorota 42 Karolina 25 Bartek 12 Kaśka 0 Tomek 66 ...
#!/usr/bin/perl open(GRADES, "grades") or die "Can't open grades: $!\n"; while ($line = <GRADES>) { ($student, $grade) = split(/ /, $line); $grades{$student} .= $grade . " "; } foreach $student (sort keys %grades) { $scores = 0; $total = 0; @grades = split(/ /, $grades{$student}); foreach $grade (@grades) { $total += $grade; $scores++; } $average = $total / $scores; print "$student: $grades{$student}\tAverage: $average\n"; } |
Zwróć uwagę na funkcję
keys
, która tworzy listę złożoną z
kluczy hasza (w tym przypadku jest to lista imion studentów).
Last modified: poniedziałek, 10 sierpnia 2015, 10:49