Estou com uma pequena dúvida, não é difícil, fator é que não foi passado corretamente os detalhes para que eu possa estar fazendo este sisteminha.
O objetivo deste exercício-programa é colocar em prática o uso da mecânica mais elementar
de manipulação de arquivos através de funções da biblioteca-padrão da Linguagem C.
Neste exercício, você deverá fazer um programa que calcule a freqüência de cada um
dos caracteres que apareça em um arquivo especificado pelo usuário.
Quando seu programa for executado, ele deverá solicitar ao usuário qual é o nome do
arquivo cujos símbolos deverão ser contados. Você pode supor que o nome do arquivo
não contém espaços. Você pode também supor que o nome do arquivo especificado pelo
usuário terá, no máximo, 127 caracteres. Em seguida, seu programa deverá ler os dados
desse arquivo a fim de contabilizar quantas vezes cada caractere aparece no arquivo. O
programa deve, por fim, exibir na tela do computador a freqüência de cada caractere que
aparecer pelo menos uma vez no arquivo do usuário.
Exemplo. Se o usuário informar um arquivo que tenha como conteúdo
aaabababa
seu programa deverá exibir algo como
O caractere ’a’ aparece 6 vezes no arquivo.
O caractere ’b’ aparece 3 vezes no arquivo.
na tela.
2 A Implementação
Para manipular arquivos, você deverá usar funções da biblioteca-padrão da Linguagem C.
Emparticular, as funções fopen, fgetc e fclose são as de maior importância para seu programa.
As funções fopen e fclose foram descritas em sala de aula. A função fgetc tem protótipo
int fgetc(FILE *fp);
e ela recebe um ponteiro para um descritor de arquivo já aberto para leitura e devolve o
próximo caractere do arquivo. Observe que apesar de fgetc devolver o próximo caractere
do arquivo indicado por fp, seu tipo devolvido é um int. Isso se deve a dois fatos:
• caracteres podem ser interpretados como “mini-inteiros” em um computador (e,
geralmente, tal valor é uma representação interna do caractere no computador, como,
por exemplo, códigos na tabela ASCII);
• a função fgetc devolve um valor especial chamado EOF (que é definido como uma
macro em stdio.h) caso o final do arquivo indicado por fp seja encontrado.
1
Como o tipo devolvido por fgetc precisa ser grande o bastante para conter todos os
valores possíveis deumchar mais o valor especial EOF para sinalizar que o arquivo terminou,
fgetc não pode devolver um valor do tipo char. Por isso, ela devolve um inteiro, já que o
padrão da Linguagem C garante que inteiros têm capacidade suficiente para armazenar os
valores necessários.
Você pode obter mais informações sobre estas funções no livro de Kernighan & Ritchie
ou na documentação do seu compilador.
Para contabilizar as freqüências de cada caractere que ocorrer no arquivo, uma sugestão
é você utilizar um vetor de inteiros que seja indexado pelo valor que fgetc devolver
(naturalmente, se tal valor for diferente de EOF). Observe-se que, em computadores usuais,
os caracteres podem assumir 256 diferentes valores, sendo que tais valores vão de 0 a 255.
Aguardo ancioso por uma resposta positiva... é claro... com toda educação, preciso disso para hoje sem falta, tenho que entregar isso hoje até as 23:00!
Pergunta
Guest :: Pietro ::
Bom Dia, Programadores!
Estou com uma pequena dúvida, não é difícil, fator é que não foi passado corretamente os detalhes para que eu possa estar fazendo este sisteminha.
O objetivo deste exercício-programa é colocar em prática o uso da mecânica mais elementar
de manipulação de arquivos através de funções da biblioteca-padrão da Linguagem C.
Neste exercício, você deverá fazer um programa que calcule a freqüência de cada um
dos caracteres que apareça em um arquivo especificado pelo usuário.
Quando seu programa for executado, ele deverá solicitar ao usuário qual é o nome do
arquivo cujos símbolos deverão ser contados. Você pode supor que o nome do arquivo
não contém espaços. Você pode também supor que o nome do arquivo especificado pelo
usuário terá, no máximo, 127 caracteres. Em seguida, seu programa deverá ler os dados
desse arquivo a fim de contabilizar quantas vezes cada caractere aparece no arquivo. O
programa deve, por fim, exibir na tela do computador a freqüência de cada caractere que
aparecer pelo menos uma vez no arquivo do usuário.
Exemplo. Se o usuário informar um arquivo que tenha como conteúdo
aaabababa
seu programa deverá exibir algo como
O caractere ’a’ aparece 6 vezes no arquivo.
O caractere ’b’ aparece 3 vezes no arquivo.
na tela.
2 A Implementação
Para manipular arquivos, você deverá usar funções da biblioteca-padrão da Linguagem C.
Emparticular, as funções fopen, fgetc e fclose são as de maior importância para seu programa.
As funções fopen e fclose foram descritas em sala de aula. A função fgetc tem protótipo
int fgetc(FILE *fp);
e ela recebe um ponteiro para um descritor de arquivo já aberto para leitura e devolve o
próximo caractere do arquivo. Observe que apesar de fgetc devolver o próximo caractere
do arquivo indicado por fp, seu tipo devolvido é um int. Isso se deve a dois fatos:
• caracteres podem ser interpretados como “mini-inteiros” em um computador (e,
geralmente, tal valor é uma representação interna do caractere no computador, como,
por exemplo, códigos na tabela ASCII);
• a função fgetc devolve um valor especial chamado EOF (que é definido como uma
macro em stdio.h) caso o final do arquivo indicado por fp seja encontrado.
1
Como o tipo devolvido por fgetc precisa ser grande o bastante para conter todos os
valores possíveis deumchar mais o valor especial EOF para sinalizar que o arquivo terminou,
fgetc não pode devolver um valor do tipo char. Por isso, ela devolve um inteiro, já que o
padrão da Linguagem C garante que inteiros têm capacidade suficiente para armazenar os
valores necessários.
Você pode obter mais informações sobre estas funções no livro de Kernighan & Ritchie
ou na documentação do seu compilador.
Para contabilizar as freqüências de cada caractere que ocorrer no arquivo, uma sugestão
é você utilizar um vetor de inteiros que seja indexado pelo valor que fgetc devolver
(naturalmente, se tal valor for diferente de EOF). Observe-se que, em computadores usuais,
os caracteres podem assumir 256 diferentes valores, sendo que tais valores vão de 0 a 255.
Aguardo ancioso por uma resposta positiva... é claro... com toda educação, preciso disso para hoje sem falta, tenho que entregar isso hoje até as 23:00!
Abraços!!!
PIETRO
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.