Ir ao conteúdo
  • Cadastre-se
izalex

Frequência de caracteres em um arquivo texto

Recommended Posts

Bom dia,

 

Sou iniciante em C, por isso estou com dificuldades em concluir meu programa. Inicialmente, consegui criar o programa abaixo que me retorna o número de caracteres de um arquivo, porém tenho que acrescentar uma função que me diga quantas vezes cada caractere, seja ele uma letra ou número, aparece no arquivo:

 

#include <stdio.h>
#include <stdlib.h>

int main ()
{
     FILE *Arquivo;
     int n = 0;
     char c;
     int num;
     int i;
     Arquivo = fopen ("C:\\.txt", "r");
     if (Arquivo == NULL) 
    {
          printf("Erro na abertura do arquivo \n");
            return (1);
             }  
             
             while (1) {
                   num = fgetc (Arquivo);
                ++n;
                   if(num == EOF) {
            break;}
           }
         n--;
         {
               printf ("A quantidade de caracteres e: %d\n\n", n); }
    

             fclose (Arquivo);
             
             system("PAUSE");
             return (0);
  }

 

Agradeço antecipadamente quem puder me ajudar.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma boa forma é:
 

#include<stdio.h>
#include <stdlib.h>

int main(){
    
    FILE* arquivo = fopen("entrada.txt", "r");
    if(!arquivo){
        perror("Erro: ");
        return 1;
    }
    int c;
    int letra[26] = {0};
    int sair = 0;
    while( sair != 1 ) {
        c = fgetc(arquivo);
        switch (c) {
            case 'a': letra[0]++; break;
            case 'b': letra[1]++; break;
            case 'c': letra[2]++; break;
            //...
            //por o resto das letras que sou  froxo >_<
            case EOF:
                sair = 1;
                break;
            default:
                break;
        }
    }
    
    for( c = 0; c < 26; c++){
        printf("Letra %c: %d\n", c+97, letra[c]);
    }
    
    fclose(arquivo);
    return 0;
}

Se pode melhorar bastante ainda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agradeço a colaboração, vangodp, porém, na execução, o somatório é sempre zero. Tentei identificar qual o problema, mas não consegui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não. Seria mais ou menos o seguinte: se eu tiver um arquivo de texto com a frase ABRACADABRA, por exemplo. O programa teria que contar a quantidade total de letras (ja fiz), bem como o número de vezes que cada letra aparece no arquivo. Nessa palavra, teríamos, para a letra A, 5 ocorrências, para a letra B, 2, para a letra C, 1, para a letra R, 2, e para a D, 1. Com esses quantitativos e o número total de letras, eu teria como calcular a probabilidade.

Compartilhar este post


Link para o post
Compartilhar em outros sites

probabilidade o que é? A porcentagem de vezes que aparece X letra? Para isso use regra de 3.
Se calcula tipo:
se totaldeletras é o 100%
     letraA é X%

Dai você pega letraA que contêm o numero de vezes que aparece 'a' no arquivo, multiplica por 100 e divide por 1000, isso de da a porcentagem de a em relação com as outras letras.

É isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vangodp, no programa que mostrei no meu post inicial, já consegui calcular o total de letras, os 100%, como você diz. A probabilidade pode sim ser feita através de regra de três, porém, para isso, eu preciso saber como chegar ao número de cada letra em um arquivo texto, através de um complemento, digamos assim, ao programa que fiz. O que estou precisando é mais ou menos o que você mandou em sua primeira resposta.

De toda forma, agradeço mais uma vez sua colaboração.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×