IvoSilva

[PROG2] Mini-Teste Exemplo #1 | Exercício 2

Mar 25th, 2012
279
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.47 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4. #include "vetor.h"
  5. #include "lista.h"
  6.  
  7. /****************************************************/
  8. /*              Funcoes a implementar               */
  9. /****************************************************/
  10.  
  11. void retira_duplicados(vetor* vec)
  12. {
  13.     int i , j ;
  14.     for (i = 1 ; i < (*vec).tamanho ; i++)
  15.         for (j = i - 1 ; j >= 0 ; j--)
  16.             if (!strcmp ((*vec).elementos[j] , (*vec).elementos[i]))
  17.                 vetor_remove(vec , i--) ;
  18. }
  19.  
  20. vetor* interseta(lista* l1, lista* l2)
  21. {
  22.     vetor *resultado = vetor_novo() ;
  23.     listaItem *p1 = l1->raiz , *p2 = l2->raiz ;
  24.     while (p1)
  25.     {
  26.         while (p2)
  27.         {
  28.             if (!strcmp (p1->elemento , p2->elemento)) vetor_insere(resultado , p1->elemento , -1) ;
  29.             p2 = p2->proximo ;
  30.         }
  31.         p1 = p1->proximo ;
  32.         p2 = l2->raiz ;
  33.     }
  34.     return resultado ;
  35. }
  36.  
  37. /****************************************************/
  38. /*     Funcoes ja implementadas (nao modificar)     */
  39. /****************************************************/
  40.  
  41. vetor* lerAtores(FILE* ficheiro)
  42. {
  43.     char buffer[256], *nlptr;
  44.     vetor* actores;
  45.  
  46.     if (ficheiro == NULL)
  47.         return NULL;
  48.  
  49.     actores = vetor_novo();
  50.  
  51.     while(!feof(ficheiro))
  52.     {
  53.         fgets(buffer, 255, ficheiro);
  54.         nlptr = strchr(buffer, '\n');
  55.         if (nlptr)
  56.             *nlptr = '\0';
  57.  
  58.         vetor_insere(actores,buffer,-1);
  59.     }
  60.  
  61.     return actores;
  62. }
  63.  
  64. lista* lerFilmes(FILE* ficheiro)
  65. {
  66.     char buffer[256], *nlptr;
  67.     lista* filmes;
  68.  
  69.     if (ficheiro == NULL)
  70.         return NULL;
  71.  
  72.     filmes = lista_nova();
  73.  
  74.     while(!feof(ficheiro))
  75.     {
  76.         fgets(buffer, 255, ficheiro);
  77.         nlptr = strchr(buffer, '\n');
  78.         if (nlptr)
  79.             *nlptr = '\0';
  80.  
  81.         lista_insere(filmes,buffer,-1);
  82.     }
  83.  
  84.     return filmes;
  85. }
  86.  
  87. int main()
  88. {
  89.     FILE *fa, *fa2, *ff, *ff2;
  90.     vetor *atores , *atores2, *resultado;
  91.     lista *filmes, *filmes2;
  92.  
  93.     /* testes */
  94.     fa = fopen("actores.txt","r");
  95.     fa2 = fopen("actores2.txt","r");
  96.     ff = fopen("filmes.txt","r");
  97.     ff2 = fopen("filmes2.txt","r");
  98.  
  99.     atores = lerAtores(fa);
  100.     atores2 = lerAtores(fa2);
  101.     filmes = lerFilmes(ff);
  102.     filmes2 = lerFilmes(ff2);
  103.  
  104.     /* testa retira_duplicados */
  105.     printf("Total inicial: %d\n", atores2->tamanho);
  106.     retira_duplicados(atores2);
  107.     printf("Unicos: %d (esperado: 30)\n\n", atores2->tamanho);
  108.  
  109.     /* testa interseta */
  110.     resultado = interseta(filmes,filmes2);
  111.     if(resultado)
  112.         printf("Intersecao: %d (esperado: 75)\n",resultado->tamanho);
  113.     else
  114.         printf("Intersecao: vetor NULL\n");
  115.  
  116.     return 0;
  117. }
Advertisement
Add Comment
Please, Sign In to add comment