Advertisement
weldisalves

Lista 07 - exercício 06

Jul 16th, 2013
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.86 KB | None | 0 0
  1. /*6. Complete o programa fornecido, definindo as funções ordena e exibe, de tal forma que se tenha a
  2. saída mostrada.*/
  3.  
  4. #include <stdio.h>
  5. #include <string.h>
  6. #define MAX 10
  7.  
  8. struct TipoDado {
  9.     char nome[MAX];
  10.     int idade;
  11.     };
  12.  
  13. // protótipos das funções
  14. void ordena(struct TipoDado dados[], char chave, int qtde);
  15. void exibe(struct TipoDado dados[], int qtde);
  16.  
  17. int main()
  18. {
  19.     struct TipoDado dados[] ={{"mateus",20},{"maria",25},{"marina",18},{"marcos",40}};
  20.     int qtde = sizeof(dados)/sizeof(dados[0]);
  21. // no gcc win: 64/16 = 4
  22.     printf("Dados sem ordenacao:\n");
  23.     exibe(dados,qtde);
  24.     ordena(dados,'n',qtde); // ordena pelo nome
  25.     printf("\nDados ordenados pelo nome:\n");
  26.     exibe(dados, qtde);
  27.     ordena(dados,'i',qtde); // ordena pela idade
  28.     printf("\nDados ordenados pela idade:\n");
  29.     exibe(dados,qtde);
  30.     return 0;
  31. }
  32.  
  33. void exibe(struct TipoDado dados[],int qtde)
  34. {
  35.     int i;
  36.     for(i=0;i<qtde;i++)
  37.     {
  38.         printf("\n %s      :     %d",dados[i].nome,dados[i].idade);
  39.     }
  40. }
  41.  
  42. void ordena(struct TipoDado dados[],char op,int qtde)
  43. {
  44.     struct TipoDado aux;
  45.     int i,j;
  46.  
  47.     if(op == 'n')
  48.     {
  49.         for(i=0;i<qtde;i++)
  50.         {
  51.             for(j=0;j<qtde-1;j++)
  52.             {
  53.                 if(strcmp(dados[j].nome,dados[j+1].nome)>0)
  54.                 {
  55.                     aux = dados[j];
  56.                     dados[j] = dados[j+1];
  57.                     dados[j+1] = aux;
  58.                 }
  59.             }
  60.         }
  61.     }else if(op == 'i')
  62.     {
  63.         for(i=0;i<qtde;i++)
  64.         {
  65.             for(j=0;j<qtde-1;j++)
  66.             {
  67.                 if(dados[j].idade>dados[j+1].idade)
  68.                 {
  69.                     aux = dados[j];
  70.                     dados[j] = dados[j+1];
  71.                     dados[j+1] = aux;
  72.                 }
  73.             }
  74.         }
  75.     }
  76.  
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement