Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 11th, 2012  |  syntax: None  |  size: 6.93 KB  |  hits: 44  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include "genericLL.h"
  2. #include "genericHash.h"
  3. #include "user.h"
  4. #include "lugar.h"
  5.  
  6. #define MAX_LINHA_LUGAR 150
  7. #define MAX_LINHA_USER 350
  8.  
  9. void limpabuff() {
  10.         int flush;
  11.         while ((flush=getchar()) != EOF && flush != '\n');
  12. }
  13.  
  14. // Dada a posição no inicio da linha do ficheiro, insere um utilizador na hash de utilizadores
  15. // 9000011000,Jon Yang,9000011000@foursquareUM.com,3761 N. 14th St
  16. int carrega_users(FILE *fp, Hash *hash){
  17.         /* Utilizar fora desta função
  18.        
  19.         if ((fp = fopen("utilizadoresFSQ_UM.csv", "r")) == NULL)
  20.                 fprintf(stderr, "Cannot open %s\n", "utilizadoresFSQ_UM.csv");
  21.         */
  22.        
  23.         Lista *aux;
  24.         User *user = (User*) malloc(sizeof(User));
  25.         char linha[MAX_LINHA_USER];
  26.        
  27.         user = NULL;
  28.        
  29.         while(!feof(fp)){
  30.                
  31.                 fgets(linha, MAX_LINHA_USER, fp);
  32.                 user = cria_user(linha);  
  33.                 aux = init(sizeof(user), &comparatorUsers);
  34.  
  35.                 insere_hash(hash, aux, user, user -> nickname);
  36.                 }
  37.         }
  38.        
  39.         return 1;
  40. }
  41.  
  42. // Dada a posição no inicio da posição no inicio da linha do ficheiro, insere um lugar na hash de lugares
  43. // 1:Praia de Porto Chão:39.4:-9.25:(acrescentar pontos)
  44. int carrega_lugares(FILE *fp, Hash *hash){
  45.  
  46.         /* Utilizar fora desta função
  47.        
  48.         if ((fp = fopen("coordenadas.txt", "r")) == NULL)
  49.                 fprintf(stderr, "Cannot open %s\n", "coordenadas.txt");
  50.         */
  51.        
  52.         Lista *aux;
  53.         Lugar *lugar = (Lugar*) malloc(sizeof(Lugar));
  54.         char linha[MAX_LINHA_LUGAR], buffer[10];
  55.        
  56.         int flush;
  57.  
  58.        
  59.         printf("Premir para carregar lugares\n");
  60.         getchar();
  61.        
  62.         while(fgets(linha, MAX_LINHA_LUGAR, fp)!= NULL/*!feof(fp)*/){
  63.                
  64.                 printf("->%s<- \n",linha);
  65.                
  66.                
  67.                 //printf("%s\n",linha);
  68.                 lugar = cria_lugar(lugar, linha);
  69.                        
  70.                 sprintf(buffer, "%d", lugar -> codigo);
  71.                 aux = init(sizeof(Lugar), &comparatorLugares);
  72.                 insere_hash(hash, aux, lugar, buffer);
  73.                        
  74.          
  75.                 printf("PROCURA:%d\n",procura((*hash)[fhash(buffer)],lugar));
  76.                
  77.                 printf("->%s<-\n",lugar->nome);
  78.                 limpabuff();
  79.         }
  80.        
  81.         return 1;
  82. }
  83.  
  84. /*
  85. // Dada a posição no inicio da linha do ficheiro, insere uma relação de amizade no grafo de amigos
  86. int carrega_amigos(FILE *fp, Grafo *g){
  87.  
  88.         return 1;
  89. }
  90.  
  91. // Dada a posição no inicio da linha do ficheiro, insere uma relação de lugares no grafo de lugares
  92. int carrega_caminhos(FILE *fp, Grafo *g){
  93.  
  94.         return 1;
  95. }*/
  96.  
  97. /*
  98. // Dado o ficheiro e o grafo de amigos, insere todas as relações de amizade num ficheiro
  99. int guardar_amigos(FILE *fp, Grafo *g){
  100.        
  101.         return 1;
  102. }
  103.  
  104. // Dado o ficheiro e o grafo de lugares, insere todas as relações de lugares num ficheiro
  105. int guardar_lug_adj(FILE *fp, Grafo *g){
  106.  
  107.         return 1;
  108. }*/
  109.  
  110. // Dado o ficheiro e a Hash de utilizadores, guarda a informação toda em ficheiro.
  111. int guardar_utilizadores(FILE *fp, Hash *hash){
  112.  
  113.         /* Utilizar fora desta função
  114.        
  115.         if ((fp = fopen("utilizadoresFSQ_UM.csv", "r")) == NULL)
  116.                 fprintf(stderr, "Cannot open %s\n", "utilizadoresFSQ_UM.csv");
  117.         */
  118.  
  119.         Lista* lista_aux;// = (Lista *) malloc(sizeof(Lista));
  120.         Nodo* nodo_aux;// = (Nodo *) malloc(sizeof(Nodo));
  121.         User* user_aux;// = (User *) malloc(sizeof(User));
  122.        
  123.         int i = 0;
  124.         char buffer[5];
  125.  
  126.         for(i = 0; i < HASH_SIZE; i++){
  127.  
  128.         lista_aux = (*hash)[i];
  129.         nodo_aux = lista_aux -> root;
  130.         user_aux = nodo_aux -> dados;
  131.        
  132.                 while(nodo_aux != NULL){
  133.                        
  134.                         fputs(user_aux -> nickname, fp);
  135.                         fputs(",", fp);
  136.                        
  137.                         fputs(user_aux -> nome, fp);
  138.                         fputs(",", fp);
  139.                        
  140.                         fputs(user_aux -> email, fp);
  141.                         fputs(",", fp);
  142.                        
  143.                         fputs(user_aux -> morada, fp);
  144.                         fputs(",", fp);
  145.                        
  146.                         sprintf(buffer, "%d", user_aux -> pontos);
  147.                         fputs(buffer, fp);
  148.                         fputs("\n", fp);
  149.                
  150.                         nodo_aux = nodo_aux -> proximo;
  151.                 }
  152.        
  153.         }
  154.  
  155.         purge_hash(hash);
  156.  
  157.         return 1;
  158. }
  159.  
  160. int guardar_lugares(FILE *fp, Hash *hash){
  161.  
  162.         /* Utilizar fora desta função
  163.        
  164.         if ((fp = fopen("coordenadas.txt", "r")) == NULL)
  165.                 fprintf(stderr, "Cannot open %s\n", "coordenadas.txt");
  166.         */
  167.  
  168.         Lista* lista_aux;// = (Lista *) malloc(sizeof(Lista));
  169.         Nodo* nodo_aux;// = (Nodo *) malloc(sizeof(Nodo));
  170.         Lugar* lugar_aux;// = (Lugar *) malloc(sizeof(Lugar));
  171.        
  172.         int i = 0;
  173.         char buffer[5];
  174.  
  175.         for(i = 0; i < HASH_SIZE; i++){
  176.  
  177.                 lista_aux = (*hash)[i];
  178.                 nodo_aux = lista_aux -> root;
  179.                 lugar_aux = nodo_aux -> dados;
  180.        
  181.                 while(nodo_aux!= NULL){
  182.                
  183.                         sprintf(buffer, "%d", lugar_aux -> codigo);
  184.                         fputs(buffer, fp);
  185.                         fputs(":", fp);
  186.                        
  187.                         fputs(lugar_aux -> nome, fp);
  188.                         fputs(":", fp);
  189.                        
  190.                         sprintf(buffer, "%d", lugar_aux -> latitude.graus);
  191.                         fputs(buffer, fp);
  192.                         fputs(".", fp);
  193.                        
  194.                         sprintf(buffer, "%d", lugar_aux -> latitude.minutos);
  195.                         fputs(buffer, fp);
  196.                         fputs(":", fp);
  197.                        
  198.                         sprintf(buffer, "%d", lugar_aux -> longitude.graus);
  199.                         fputs(buffer, fp);
  200.                         fputs(".", fp);
  201.                        
  202.                         sprintf(buffer, "%d", lugar_aux -> longitude.graus);
  203.                         fputs(buffer, fp);
  204.                         fputs(":", fp);
  205.                        
  206.                         sprintf(buffer, "%d", lugar_aux -> pontos_checkin);
  207.                         fputs(buffer, fp);
  208.                         fputs("\n", fp);
  209.                        
  210.                         nodo_aux = nodo_aux -> proximo;
  211.                 }
  212.        
  213.         }
  214.  
  215.         free(lugar_aux);
  216.         free(nodo_aux);
  217.         free(lista_aux);
  218.        
  219.         purge_hash(hash);
  220.  
  221.         return 1;
  222. }