Advertisement
Lagx

ANÁLISIS DE CORREOS ELECTRONICOS

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