UIN PROGRAMA QUE CUENTE PALABRAS DE UN ARCHIVO DE TIPO TEXTO URGENTE

guillermodj
05 de Septiembre del 2005
POR FAVOR NUNA FUNCION QUE ME JALE UN ARCHIVO DE TIPO TXT Y ME CUENTE CUANTAS VECES SE REPITE CADA PALABRA QUE CONTIENE EL TEXTO Y LO ENVIE A OTRO ARCHIVO DE TIPO TXT E IMPRIMA EL RESULTADO

Caiman
05 de Septiembre del 2005
Solo modifica este programa para que envíe el resultado al archivo de texto que quieres el resto ya lo hace solo:

#include <stdio.h>
#include <string.h>
#include <ctype.h>
void ImprimeOrdenados(char letras[],unsigned short int cont[]);

#define Limite 26
#define Fin ''

void main(void)
{
register basura;
FILE *arch;

arch=fopen("archivo.bin","rb+");
if(arch!=NULL)
{
char letras[Limite],aux;
unsigned short int cont[Limite],auxcont=0;

letras[0]=Fin;
cont[0]=0;
while(!feof(arch))
{
aux=fgetc(arch);
if(isalpha(aux))
{
aux=toupper(aux);
for(register a=0;a<strlen(letras);a++)
{
if(aux==letras[a])
break;
}//busca letra

if(a==strlen(letras))
{
letras[auxcont]=aux;
cont[auxcont]+=1;
auxcont++;
letras[auxcont]=Fin;
cont[auxcont]=0;
}//no esta esta letra
else
cont[a]+=1;
}//si es letra
}//lee el archivo

ImprimeOrdenados(letras,cont);
}
else
printf("n Error al abrir el archivo!!");

printf("nn Enter Any Key For Exit!! ");
scanf("%d",&basura);
}

void ImprimeOrdenados(char letras[],unsigned short int cont[])
{
char auxLetras;
register auxCont;

for(register a=0;a<strlen(letras);a++) //ordena por numero
{
for(register b=0;b<strlen(letras);b++)
{
if(cont[a]>cont[b])
{
auxCont=cont[a];
cont[a]=cont[b];
cont[b]=auxCont;
auxLetras=letras[a];
letras[a]=letras[b];
letras[b]=auxLetras;
}
}
}//por numero

for(a=0;a<strlen(letras)-1;a++) //ordena por letra
{
if(cont[a]==cont[a+1])//si son iguales
{
if(letras[a]>letras[a+1])
{
auxLetras=letras[a+1];
letras[a+1]=letras[a];
letras[a]=auxLetras;
}
}
}//por letra

for(a=0;a<strlen(letras);a++)
printf("n %c t %d",letras[a],cont[a]);
}