Ir ao conteúdo
  • Cadastre-se

Frequência de caracteres em um arquivo texto


izalex

Posts recomendados

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.

 

Link para o comentário
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.

Link para o comentário
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.

Link para o comentário
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?

Link para o comentário
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.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...