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.
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
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){
Pergunta
Namidia1
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
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.