Usando valores e chaves de hashes em Perl

0
  1. Lê uma frase do usuário usando o < > operador, divide a sentença em uma matriz de palavras (dica: use split (/ regex /, $ string) e mostra quantas palavras existem na sentença.

  2. Cria um hash que contém palavras da sentença como chaves e o número de ocorrências de cada palavra como o valor associado e imprime o número de ocorrências de cada palavra na sentença em ordem alfabética.

Ok, então a pergunta acima foi dada para mim como uma tarefa! e antes que você pense que eu vou pedir para resolvê-lo, eu não estou simplesmente procurando por alguma orientação sobre como completá-lo!

Eu completei a primeira parte que foi bem fácil! colará abaixo:

print("please enter a sentence!\n");
$x = <>;
chomp $x;

@bases=split(" ",$x);
print ("@bases\n");
foreach $i (@bases){
  print("$i\n");
}

$size=@bases;
print("the amount of words in this sentence are:$size\n");

Eu entendo o que a segunda questão está me pedindo, no entanto, estou com dificuldades para implementá-la! como na terra se conta quantas vezes uma palavra se repete em uma frase e então a usa como o valor para aquela palavra exata! Eu apenas não sei! então, talvez, se alguém puder me guiar nos caminhos certos! Eu ficaria muito grato!

obrigada! se eu descobrir mais, vou colar!

    
por Amy Mccoy 21.11.2015 / 02:07

1 resposta

0

Pense em um hash como uma matriz cujos índices (chamados de "chaves") não estão limitados a serem inteiros. Nesse problema, as chaves seriam naturalmente as palavras processadas pelo script e os valores de hash seriam o número de ocorrências de cada chave. Assim, toda vez que você encontrar uma palavra, use essa como a chave de hash, incrementando o valor de hash em um.

Para imprimir o resultado em ordem alfabética, você deve construir uma matriz ordenada de todas as chaves de hash e fazer um loop (se foreach ou for depende do gosto), imprimindo cada chave de hash e o hash correspondente valor.

Como é um exercício, você precisa descobrir como expressar isso em código.

    
por 21.11.2015 / 02:31

Tags