FranciscoSoccol

Lista 07 - Exercicio 06

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