#!/usr/bin/perl -w

# Uma solucao para o exercicio 1 da Aula 27
# MAC211, 1S2009
# M.S.Reis, 19.06.2009

use strict;

# Subrotina com tres argumentos: 
# - o primeiro eh uma referencia para uma lista de nomes;
# - o segundo e o terceiro sao referencias para hashes cujas chaves sao 
#   nomes da lista e cujos valores sao numeros.
#
# A subrotina devolve um hash com a media aritmetica dos dois hashes 
# descritos acima.
#
sub calculaMedia {
  my ($ref_nome, $ref_P1, $ref_P2) = @_;
  my %media = ();
  foreach (@{$ref_nome}){
    $media{$_} = (${$ref_P1}{$_} + ${$ref_P2}{$_}) / 2;
  }
  %media;  # return %media
}

#
# "Main"
#

my @aluno = ("Foo", "Bar", "Baz");
my %P1 = (Foo => 0, Bar => 7.5, Baz => 4);
my %P2 = (Foo => 1, Bar => 5, Baz => 10);

my %MF = calculaMedia(\@aluno, \%P1, \%P2);

# imprime os nomes, provas e medias
#
print "Aluno \t P1 \t P2 \t MEDIA\n";
foreach(@aluno){
  printf "%5s \t %2.2f \t %2.2f \t %2.2f\n", 
         $_, $P1{$_}, $P2{$_}, $MF{$_};
}
