FranciscoSoccol

Lista 11 - Exercicio 01

Sep 10th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.95 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. #define MAX_NOME 50
  6. #define MAX_LISTA 1200
  7.  
  8. typedef struct{
  9.     char nome[MAX_NOME];
  10. }Nome;
  11.  
  12. typedef struct{
  13.     int qtde;
  14.     Nome *vetor[MAX_LISTA];
  15. }Lista;
  16.  
  17. //prototipos
  18. void inicia(Lista *listas);
  19. int carrega(Lista *listas);
  20. void insere(Lista *listas, char *auxNome, int j);
  21. void orndena(int maxLista, Lista *listas);
  22. void exibe(Lista *listas, int maxLista);
  23.  
  24. int main()
  25. {
  26.     int maxLista;
  27.     Lista listas;
  28.     inicia(&listas);
  29.  
  30.     maxLista=carrega(&listas);
  31.     orndena(maxLista,&listas);
  32.     exibe(&listas,maxLista);
  33.     printf("******  Processo finalizado!   ******\n\n");
  34.  
  35.     return 0;
  36. }
  37.  
  38. void inicia(Lista *listas)
  39. {
  40.     listas->qtde=0;
  41. }
  42.  
  43. int carrega(Lista *listas)
  44. {
  45.     int maxLista,j;
  46.     char auxNome[MAX_NOME];
  47.  
  48.     FILE *fp = fopen("nomes.txt","r");
  49.     if(fp==NULL)
  50.         printf("Erro ao abrir arquivo!");
  51.  
  52.     fscanf(fp,"%d",&maxLista);
  53.     for(j=0;j<maxLista;j++){
  54.         fscanf(fp,"%s",&auxNome);
  55.         insere(listas,auxNome,j);
  56.         listas->qtde++;
  57.     }
  58.     return maxLista;
  59. }
  60.  
  61. void insere(Lista *listas, char *auxNome, int j)
  62. {
  63.     char *aux;
  64.     aux=(char*)malloc(sizeof(char)*strlen(auxNome)+1);
  65.     strcpy(aux,auxNome);
  66.     listas->vetor[j]=aux;
  67. }
  68.  
  69. void orndena(int maxLista, Lista *listas)
  70. {
  71.     int trocou=1, i;
  72.     Lista *aux;
  73.  
  74.     while(trocou)
  75.     {
  76.         trocou=0;
  77.         for(i=0;i<maxLista-1;i++){
  78.             if(strcmp(listas->vetor[i],listas->vetor[i+1])>0){
  79.                 aux=listas->vetor[i];
  80.                 listas->vetor[i]=listas->vetor[i+1];
  81.                 listas->vetor[i+1]=aux;
  82.                 trocou=1;
  83.             }
  84.         }
  85.     }
  86. }
  87.  
  88. void exibe(Lista *listas, int maxLista)
  89. {
  90.     int i;
  91.     FILE *fp = fopen("nomes_ordenados.txt","w");
  92.     if(fp==NULL)
  93.         printf("Erro ao criar arquivo");
  94.  
  95.     for(i=0;i<maxLista;i++)
  96.         fprintf(fp,"%04d\t%s\n",i+1, listas->vetor[i]);
  97. }
Advertisement
Add Comment
Please, Sign In to add comment