LU_U 0 Denunciar post Postado Novembro 21, 2013 Olá amigos, Estou iniciando no forum e preciso de uma ajuda no código abaixo. O programa deve receber nomes e idade numa função para inserir na agenda e imprimi-los em ordem alfabética. exemplo Entrada id Nome idade 1 Paulo 13 2 Marcos 43 3 Antonio 65 Saída 3 Antonio 65 2 Marcos 43 1 Paulo 13 Obrigado !!! #include <stdio.h> #include <string.h> #include <malloc.h> typedef struct{ int idPessoa; char nome[30]; int idade; } agenda; typedef char* string; agenda *pessoas; int qtdPessoas; void iniciar(){ qtdPessoas = 0; pessoas = malloc(sizeof(agenda)); } agenda newPessoa(){ agenda tempPessoa; printf("Digite um nome:"); fflush(stdin); scanf("%s", tempPessoa.nome); printf("Digite a idade:"); scanf("%d", &tempPessoa.idade); return(tempPessoa); } void addPessoa(){ qtdPessoas++; pessoas = realloc(pessoas, qtdPessoas*sizeof(agenda)); int indice = qtdPessoas-1; pessoas[indice] = newPessoa(); pessoas[indice].idPessoa = indice; } void mostrarAgenda(){ int i = 0; for (i=0; i < qtdPessoas; i++){ printf("\n%d\t%s\t%d", pessoas[i].idPessoa, pessoas[i].nome, pessoas[i].idade); } } int main(int argc, char **argv){ addPessoa(); addPessoa(); addPessoa(); mostrarAgenda(); return (0); } Compartilhar este post Link para o post Compartilhar em outros sites
LU_U 0 Denunciar post Postado Novembro 21, 2013 Olá Turma, Pesquisando neste fórum e em meus arquivos, consegui a solução de como ordenar nomes em uma struct, no meu caso, tipo "agenda", segue parte do código que alterei. Está resolvido !!! Obrigado se vc tentou ajudar com uma solução para postar, claro se vc tiver uma outra solução é muito bem vinda. Sds LU_U void mostrarAgenda(){ int i = 0; for (i=0; i < qtdPessoas; i++){ for (i=0; i <=1; i++){ for (j=i+1; j<=2; j++){ if(strcmp(pessoas[i].nome,pessoas[j].nome)>0){ strcpy(troca,pessoas[i].nome); strcpy(pessoas[i].nome,pessoas[j].nome); strcpy(pessoas[j].nome,troca); printf("\n%d\t%s\t%d", pessoas[i].idPessoa, pessoas[i].nome, pessoas[i].idade); } } } printf("\n%d\t%s\t%d", pessoas[i].idPessoa, pessoas[i].nome, pessoas[i].idade); } } Compartilhar este post Link para o post Compartilhar em outros sites
LU_U 0 Denunciar post Postado Novembro 21, 2013 Corrigindo a função addAgenda acima. void mostrarAgenda(){ int i = 0; int j = 0; int aux =0; int aux2=0; for (i=0; i <=1; i++){ for (j=i+1; j<=2; j++){ if(strcmp(pessoas[i].nome,pessoas[j].nome)>0){ strcpy(troca,pessoas[i].nome); strcpy(pessoas[i].nome,pessoas[j].nome); strcpy(pessoas[j].nome,troca); aux = pessoas[i].idade; pessoas[i].idade=pessoas[j].idade; pessoas[j].idade=aux; aux2 = pessoas[i].idPessoa; pessoas[i].idPessoa=pessoas[j].idPessoa; pessoas[j].idPessoa=aux2; for (i=0; i < qtdPessoas; i++){ printf("\n%d\t%s\t%d", pessoas[i].idPessoa, pessoas[i].nome, pessoas[i].idade); } } } } } Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites