Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // versão 4: modularizado (resposta completa do exercício 6 lista 07)
- #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 ordena(struct TipoDado dados[], char chave, int qtde) {
- int trocou, i;
- struct TipoDado aux;
- // ordena pelo nome
- if(chave=='n') {
- trocou=1;
- while(trocou) {
- trocou = 0;
- for(i=0; i<qtde-1; i++) {
- if(strcmp(dados[i].nome,dados[i+1].nome)>0) {
- aux = dados[i];
- dados[i] = dados[i+1];
- dados[i+1] = aux;
- trocou = 1;
- }
- }
- }
- }
- else {
- // ordena pela idade
- trocou=1;
- while(trocou) {
- trocou = 0;
- for(i=0; i<qtde-1; i++) {
- if(dados[i].idade > dados[i+1].idade) {
- aux = dados[i];
- dados[i] = dados[i+1];
- dados[i+1] = aux;
- trocou = 1;
- }
- }
- }
- }
- return;
- }
- void exibe(struct TipoDado dados[], int qtde) {
- int i;
- for(i=0; i<qtde; i++)
- printf("\n%d - %s \t %d",i+1,dados[i].nome,dados[i].idade);
- printf("\n");
- return;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement