FranciscoSoccol

Lista 11 - Exercicio 02

Sep 9th, 2013
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.38 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. #define MAX 50
  6.  
  7. typedef struct{
  8.     char nome[MAX];
  9.     long int cod;
  10. }Dados;
  11.  
  12. typedef struct No{
  13.     Dados *inf;
  14.     struct No *prox;
  15. }No;
  16.  
  17. typedef struct{
  18.     int qtde;
  19.     No *inicio;
  20. }Lista;
  21.  
  22. //prototipos
  23. void inicia(Lista *listas);
  24. void carrega(Lista *listas);
  25. void insere(Lista *listas, int auxInt,char *auxNomeAlocado);
  26. Dados* buscaNome(Lista *listas, long int codigoBusca);
  27. void exibe(Dados *encontrado);
  28. void exibeTudo(Lista *listas);
  29.  
  30. int main()
  31. {
  32.     Lista listas;
  33.     inicia(&listas);
  34.     carrega(&listas);
  35.     exibeTudo(&listas);
  36.  
  37.     long int codigoBusca;
  38.     printf("\n\nQual o codigo de busca desejado? ");
  39.     scanf("%ld",&codigoBusca);
  40.  
  41.     Dados *encontrado;
  42.     encontrado=buscaNome(&listas,codigoBusca);
  43.     exibe(encontrado);
  44.     return 0;
  45. }
  46.  
  47. void inicia(Lista *listas)
  48. {
  49.     listas->qtde=0;
  50.     listas->inicio=NULL;
  51. }
  52.  
  53. void carrega(Lista *listas)
  54. {
  55.     int auxInt;
  56.     char auxChar[MAX], *nomeAlocado;
  57.     FILE *fp = fopen("registros.txt","r");
  58.     if(fp==NULL)
  59.         printf("Erro ao abrir arquivo");
  60.  
  61.     while(fscanf(fp,"%ld %s",&auxInt,&auxChar) != EOF)
  62.     {
  63.         nomeAlocado=(char*)malloc(sizeof(auxChar));
  64.         strcpy(nomeAlocado,auxChar);
  65.         insere(listas,auxInt,nomeAlocado);
  66.         listas->qtde++;
  67.     }
  68. }
  69.  
  70. void insere(Lista *listas, int auxInt,char *auxNomeAlocado)
  71. {
  72.     Dados *aux;
  73.     aux=(Dados*)malloc(sizeof(Dados));
  74.     aux->cod=auxInt;
  75.     strcpy(aux->nome,auxNomeAlocado);
  76.  
  77.     No *novoNo;
  78.     novoNo=(No*)malloc(sizeof(No));
  79.     novoNo->inf=aux;
  80.     novoNo->prox=listas->inicio;
  81.     listas->inicio=novoNo;
  82. }
  83.  
  84. Dados* buscaNome(Lista *listas, long int codigoBusca)
  85. {
  86.     int i;
  87.     char *auxChar;
  88.     No *aux = listas->inicio;
  89.     for(i=0; i<listas->qtde; i++)
  90.     {
  91.         if(codigoBusca < aux->inf->cod){
  92.             aux = aux->prox;
  93.             continue;}
  94.         else
  95.             return aux->inf;
  96.     }
  97.     return aux->inf;
  98. }
  99.  
  100. void exibeTudo(Lista *listas)
  101. {
  102.     int i;
  103.     No *aux= listas->inicio;
  104.     for(i=0; i<listas->qtde;i++){
  105.         printf("Codigo : %ld\tNome : %s\n",aux->inf->cod, aux->inf->nome);
  106.         aux=aux->prox;}
  107. }
  108.  
  109. void exibe(Dados *encontrado)
  110. {
  111.     system("cls");
  112.     printf("Resultado da Busca:\n\nCodigo : %ld\nNome : %s\n\n", encontrado->cod, encontrado->nome);
  113.     return;
  114. }
Advertisement
Add Comment
Please, Sign In to add comment