Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior_PP

Tabela Hashing

Recommended Posts

Oi Pessoal! Estava aqui tentando fazer uma tabela que pega as frequencias dos caracteres do alfabeto de um arquivo .txt! Pensei em usar o um while(!EOF(arq)) e dentro do while eu usaria o getch para pegar caractere por caractere! Mas surgiram duas duvidas:

1- O que fazer quando chegar no final da primeira linha do .txt se eu quero percorrer toto o texto

2- Eu vou ter que fazer varios if else aninhados para comparar os caracteres e pegar as frequencias?

Agradeço pelo espaço e por que tiver interesse no codigo!

Compartilhar este post


Link para o post
Compartilhar em outros sites
Oi Pessoal! Estava aqui tentando fazer uma tabela que pega as frequencias dos caracteres do alfabeto de um arquivo .txt! Pensei em usar o um while(!EOF(arq)) e dentro do while eu usaria o getch para pegar caractere por caractere! Mas surgiram duas duvidas:

1- O que fazer quando chegar no final da primeira linha do .txt se eu quero percorrer toto o texto

2- Eu vou ter que fazer varios if else aninhados para comparar os caracteres e pegar as frequencias?

Agradeço pelo espaço e por que tiver interesse no codigo!

 

1 - Se você usar o while(!EOF(arg)), só vai terminar quando chegar ao fim, você vai pegar um caracter '\n' e o while vai continuar.

 

2 - Prefira um switch. Mas tem uma coisa melhor, se usar a tabela ASCII, você pode comparar o caracter que você pegou com o valor ASCII inteiro para letras maiúsculas e minúsculas. Procure mais no google que você descobre como. Vai ser beeem mais fácil fazer, visto que nem de switch vai precisar, só de um if.

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não me engano, o K&R tem exatamente este exercício (e a solução). Sugiro que compre o livro.

 

Note que as soluções mais inteligentes (como a proposta acima pelo Renato) não são portáveis. Lembre-se de "confiar" em referências diretas à estrutura da tabela ascii somente pra código que não precise ser rodad em qualquer implementação.

 

Se a entrada tiver que vir de um arquivo, você tem 2 opções: ler de stdin, e redirecionar a entrada usando "<" na linha de comando ou inspecionar argc e argv pra abrir o arquivo e percorrê-lo.

 

De qualquer forma, ler letra por letra seria lento demais. Apesar de fazer sentido algoritmicamente (inspecionar o caracter assim que lê-lo), principalmente se houver limitação espacial, é melhor ler a maior quantidade possível por vez. Para arquivos pequenos, faz sentido carregar todo o conteúdo e percorrer o vetor incrementando os contadores depois. Para arquivos maiores, o processo é o mesmo, mas repetido várias vezes (lendo-se determinada quantidade máxima de bytes por iteração).

Compartilhar este post


Link para o post
Compartilhar em outros sites
Valeu! Voces me ajudaram e ampliaram meu conhecimento! Pode deixar que vou dar uma olhada nesse livro!

Depois escrevo o que consgui aqui! Valeu

 

Estamos sempre a dispor! :joia:

 

Boa sorte com o aprendizado aê ;D

 

 

Caso resolvido?

 

 

Abraços :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.