Advertisement
Lagx

CUENTA PALABRAS

Nov 20th, 2017
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.90 KB | None | 0 0
  1. #define NULA -1
  2.  
  3. typedef struct palabra{
  4.     char cad[40];
  5.     int frec;
  6. } Palabra;
  7.  
  8. int buscar(Palabra *vector,char cadena[40],int talla)
  9. {
  10.     int i;
  11.     for(i=0;i<talla;i++)
  12.     {
  13.         if(strcmp(vector[i].cad,cadena) == 0)
  14.         {
  15.             return i;
  16.         }
  17.     }
  18.     return NULA;
  19. }
  20.  
  21. void orden_alfabetico(Palabra *vector,int cont)
  22. {
  23.     char cadena[40];
  24.     int i,j,aux,aux2;
  25.     for(i=0;i<cont-1;i++)
  26.     {
  27.         for(j=i+1;j<=cont-1;j++){
  28.             aux=strcmp(vector[i].cad,vector[j].cad);
  29.             if(aux > 0)
  30.             {
  31.                 strcpy(cadena,vector[j].cad);
  32.                 aux2 = vector[j].frec;
  33.                 strcpy(vector[j].cad,vector[i].cad);
  34.                 vector[j].frec = vector[i].frec;
  35.                 strcpy(vector[i].cad,cadena);
  36.                 vector[i].frec = aux2;
  37.             }
  38.         }
  39.     }
  40. }
  41.  
  42. void mostrarPalabrasFrecuencia(FILE *entrada,FILE **salida)
  43. {
  44.     Palabra *vector = NULL;
  45.     char cadena[40];
  46.     char cadena_aux[40];
  47.     int i=0,j,talla,cont,pos;
  48.     while(fscanf(entrada,"%s",cadena) != EOF)
  49.     {
  50.         cont=0;
  51.         talla = strlen(cadena);
  52.         for(j=0;j<talla;j++)
  53.         {
  54.            if(isalpha(cadena[j]))
  55.            {
  56.                cont++;
  57.            }
  58.            cadena_aux[j] = tolower(cadena[j]);
  59.         }
  60.         cadena_aux[j]='\0';
  61.         if(cont == talla)
  62.         {
  63.             pos = buscar(vector,cadena_aux,i);
  64.             if(pos != NULA)
  65.             {
  66.                 vector[pos].frec++;
  67.             }
  68.             else
  69.             {
  70.                 vector = (Palabra *) realloc (vector,sizeof(Palabra) * (i+1));
  71.                 vector[i].frec = 1;
  72.                 strcpy(vector[i].cad,cadena_aux);
  73.                 i++;
  74.             }
  75.         }
  76.     }
  77.     orden_alfabetico(vector,i);
  78.     for(j=0;j<i;j++)
  79.     {
  80.         printf("%s %d\n",vector[j].cad,vector[j].frec);
  81.     }
  82. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement