Advertisement
hmcristovao

Preparação para o exercício 6 da lista 07 - ordena structs

Jul 23rd, 2013
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.30 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. int main() {
  9.    struct TipoDado dados[] ={{"mateus",20},{"maria",25},{"marina",18},{"marcos",40}};// e o mesmo que:
  10.    struct TipoDado aux;
  11.    int i, trocou, qtde;
  12.    qtde = sizeof(dados)/sizeof(dados[0]);
  13.  
  14.    // ordena pelo nome
  15.    trocou=1;
  16.    while(trocou) {
  17.       trocou = 0;
  18.       for(i=0; i<qtde-1; i++) {
  19.          if(strcmp(dados[i].nome,dados[i+1].nome)>0) {
  20.             // a struct é copiada integralmente com o operador de atribuição
  21.             aux = dados[i];
  22.             dados[i] = dados[i+1];
  23.             dados[i+1] = aux;
  24.             trocou = 1;
  25.          }
  26.       }
  27.    }
  28.    printf("Dados ordenados (pelo nome):");
  29.    for(i=0; i<qtde; i++)
  30.       printf("\n%d - %s \t %d",i+1,dados[i].nome,dados[i].idade);
  31.  
  32.    // ordena pela idade
  33.    trocou=1;
  34.    while(trocou) {
  35.       trocou = 0;
  36.       for(i=0; i<qtde-1; i++) {
  37.          if(dados[i].idade > dados[i+1].idade) {
  38.             aux = dados[i];
  39.             dados[i] = dados[i+1];
  40.             dados[i+1] = aux;
  41.             trocou = 1;
  42.          }
  43.       }
  44.    }
  45.    printf("\n\nDados ordenados (pelo idade):");
  46.    for(i=0; i<qtde; i++)
  47.       printf("\n%d - %s \t %d",i+1,dados[i].nome,dados[i].idade);
  48.  
  49.    return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement