nikolas_serafini

Lista 7 - Exercício 6

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