Ir para conteúdo
Fórum Script Brasil
  • 0

Algorítimo para contar repetições de números dentro de vários arquivos .txt


Namidia1

Pergunta

Tenho vários arquivos .txt que contém apenas números. O nome dos arquivos são folha0001.txt, folha0002.txt, folha0003.txt, ..., folha1000.txt. 

Quero um que conte as repetições de todos os números no intervalo de 0 a 255. 

por exemplo, se tenho 1000 arquivos e em cada arquivo aparece 5 vezes o número 13 e 4 vezes o número 327, no final da contagem deverá mostrar que há 5000 repetições do número 13 e 4000 repetições do numero 327. 

Tenho um Exemplo de um contador em que só tem interesse de contar o número 255 dentro de arquivos que contem apenas os números 0 e 255.

 

 

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>


unsigned folha ( int valor){
    
}

int main(int argc, char* argv[]) {
    // varivavel com o nome do arquvio sera completada com o numero do arquivo
    char     buffer[100] = "folha",
         ch;
    char aux[500];
    int j = 0;
    int x = 0;
    int i=1;
    int valor = 255;
    unsigned num=0;
    unsigned contarq = 0;    
    FILE     *arq;

    //itoa(i,buffer,10);//aqui para converter apenas o inteiro em string
    
    //completando a string com o indice do arquivo 
    sprintf(buffer,"%s000%d.txt",buffer,i); // para formatar as strings ou concatenar valores, onde %s(string) %(d) inteiro na base 10
    
    printf("%s\n", buffer);
    
    arq = fopen(buffer, "r");
    
    // vai abrindo os arquivos um por um ate não encontrar mais nenhum
    while (arq != NULL){
        
    
        // percorrendo e procurando o valor no aquivo folhaINDICE.txt
        while( (ch=fgetc(arq))!= EOF )
            //quando encontrar um numero, vai atribui ao vetor aux, um por um, ate encontrar o numero completo ex: 2 , 25 , 255 
            if (ch == '1' || ch == '2' ||ch == '3' || ch == '4' ||ch == '5' || ch == '6' ||ch == '7' || ch == '8' || ch == '9' || ch == '0'){
                aux[j++] = ch;
            }
            else{
                //finaliza a string aux com o \0 e transforma ela em inteiro 
                aux[j] = '\0';
                x = atoi(aux);
                j = 0;
                
                // verifica se o numero inteiro que foi encontrado é o que deseja
                // como so tem valores 255 e 0 , pode substituir a variavel por 255
                if (x == valor){
                    contarq++;
                    num++;
                }
            }
            
        printf ("quantidade de repeticao no arq %d : %d\n", i, contarq);
        //fecha arquivo
        fclose(arq);
        
        //abrindo o proximo arquivo
        i++;
        contarq = 0;
        strcpy( buffer, "folha");
        
        //abrindo o proximo arquivo
        if (i < 10) {    
            sprintf(buffer,"%s000%d.txt",buffer,i); 
            printf("%s\n", buffer);
            arq = fopen(buffer, "r");
        }
        else 
            if ( i == 10 || i < 100){
        
                sprintf(buffer,"%s00%d.txt",buffer,i); 
                printf("%s\n", buffer);    
                arq = fopen(buffer, "r");
            }
            else
                if ( i == 100 || i < 1000){
                    
                    sprintf(buffer,"%s0%d.txt",buffer,i);
                    printf("%s\n", buffer);
                    arq = fopen(buffer, "r");
                }
            
    }
    
    printf("quantidade total de repeticoes: %d \n", num);
    
    system("pause");
    
    return 0;
}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...