Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #define MAX 10
- struct TipoDado {
- char nome[MAX];
- int idade;
- };
- // protótipos das funções
- void ordena(struct TipoDado dados[], char chave, int qtde);
- void exibe(struct TipoDado dados[], int qtde);
- int main()
- {
- struct TipoDado dados[] ={{"mateus",20},{"maria",25},{"marina",18},{"marcos",40}};
- int qtde = sizeof(dados)/sizeof(dados[0]); // no gcc win: 64/16 = 4
- printf("Dados sem ordenacao:\n");
- exibe(dados,qtde);
- ordena(dados,'n',qtde); // ordena pelo nome
- printf("\nDados ordenados pelo nome:\n");
- exibe(dados, qtde);
- ordena(dados,'i',qtde); // ordena pela idade
- printf("\nDados ordenados pela idade:\n");
- exibe(dados,qtde);
- return 0;
- }
- //ordenaçao
- void ordena(struct TipoDado dados[], char chave, int qtde)
- {
- int i,auxIdade, trocou=1;
- struct TipoDado aux[qtde];
- char auxNome[MAX];
- if(chave=='n')
- {
- while(trocou)
- {
- trocou=0;
- for(i=0;i<qtde;i++)
- if(strcmp(dados[i].nome,dados[i+1].nome)>0 && i<3){//compara a string
- aux[i]=dados[i];
- dados[i]=dados[i+1];
- dados[i+1]=aux[i];
- trocou=1;
- break;}
- }
- }
- if(chave=='i')
- {
- while(trocou)
- {
- trocou=0;
- for(i=0;i<qtde;i++)
- if(dados[i].idade>dados[i+1].idade)//compara
- {//faz a ordenaçao
- auxIdade=dados[i].idade;
- dados[i].idade=dados[i+1].idade;
- dados[i+1].idade=auxIdade;
- strcpy(auxNome,dados[i].nome);
- strcpy(dados[i].nome,dados[i+1].nome);
- strcpy(dados[i+1].nome,auxNome);
- trocou=1;
- break;
- }
- }
- }
- }
- //exibiçao
- void exibe(struct TipoDado dados[], int qtde)
- {
- int i;
- for(i=0;i<qtde;i++)
- printf("Nome: %s Idade: %d\n",dados[i].nome,dados[i].idade);
- }
Advertisement
Add Comment
Please, Sign In to add comment