O objetivo do programa que você fará é resolver o seguinte problema:
Dado um arquivo texto e um inteiro positivo k, imprimir as k palavras que mais ocorrem no texto (e o número de vezes que elas ocorrem) em ordem decrescente de freqüência.
O problema ainda está um tanto quanto vago. Vamos torná-lo mais preciso. Suponhamos que uma palavra é uma seqüência de uma ou mais letras consecutivas; ``Maratona'' é uma palavra enquanto que ``pau-brasil'' não é. A seqüência de letras deve ser maximal, significando que a seqüência não pode ser aumentada sem que incluamos uma não-letra. Letras maiúsculas serão consideradas equivalentes a letras minúsculas, logo as palavras ``Maratona'', ``MARATONA'' e ``maratona'' são idênticas e deverão ser consideradas como sendo a mesma palavra.
O problema ainda não está bem definido pois um arquivo pode ter mais que k palavras, todas ocorrendo com a mesma freqüência; ou ainda pode nem conter k palavras distintas. Sejamos mais precisos: as palavras mais freqüentes deverão ser impressas em ordem decrescente de freqüência, com palavras de mesma freqüência listadas em ordem alfabética. A impressão deverá parar depois que k palavras foram impressas; se mais do que k palavras estão presentes no texto.
Você pode supor que o comprimento máximo de uma palavra é 31 caracteres e que no texto não ocorrem mais do que 1024 palavras distintas. Você ainda pode supor que as palavras do texto não estão acentuadas. Assim no texto escreveremos, por exemplo, ``frequente'' ao invés de ``freqüente'', ``estao'' ao invés de ``estão'' e ``inves'' ao invés de ``invés''.