Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*6. Complete o programa fornecido, definindo as funções ordena e exibe, de tal forma que se tenha a
- saída mostrada.*/
- #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;
- }
- void exibe(struct TipoDado dados[],int qtde)
- {
- int i;
- for(i=0;i<qtde;i++)
- {
- printf("\n %s : %d",dados[i].nome,dados[i].idade);
- }
- }
- void ordena(struct TipoDado dados[],char op,int qtde)
- {
- struct TipoDado aux;
- int i,j;
- if(op == 'n')
- {
- for(i=0;i<qtde;i++)
- {
- for(j=0;j<qtde-1;j++)
- {
- if(strcmp(dados[j].nome,dados[j+1].nome)>0)
- {
- aux = dados[j];
- dados[j] = dados[j+1];
- dados[j+1] = aux;
- }
- }
- }
- }else if(op == 'i')
- {
- for(i=0;i<qtde;i++)
- {
- for(j=0;j<qtde-1;j++)
- {
- if(dados[j].idade>dados[j+1].idade)
- {
- aux = dados[j];
- dados[j] = dados[j+1];
- dados[j+1] = aux;
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement