Faço Ads e estou resolvendo uma lista de struct para a aula.
Fiz um exercicío simples de cadastro , alocação dinâmica e impressão , só que ele n está dando certo , pois a impressão deve ser feita em ordem alfabética e eu fiz pelo algoritmo bubble sort só que n está ordenando , será que alguém poderia dar uma olhada e ver o que tem de errado o porque de não estar ordenando ?
#include<stdio.h> #include<stdlib.h> #include<locale.h> #include<string.h> #define X 3
void preenche(pessoa *p) ; void mostra(pessoa *p); void bublesort(pessoa *p); int main() // programa principal; { setlocale(LC_ALL,"portuguese"); pessoa *p=NULL; // iguala a Null para inicializar o ponteiro p; p=(pessoa*)malloc(sizeof(pessoa)*X); // alocação dinâmica; int a;
for(a=0;a<(X);a++) { preenche(&p[a]); // acessa diretamente o end de *p; }
bublesort(p); // ordena struct mostra(p);
}
void preenche(pessoa *p) { char lixo[2]; // limpa o buffer; printf("Insira seu nome \n"); scanf("%s",p->nome); gets(lixo); printf("Insira cidade,bairro, rua e nº\n"); gets(p->endereco); printf("Insira O DDD e em seguida seu telefone\n"); gets(p->telefone); gets(lixo); //limpa system("cls"); }
Pergunta
sarahbortoloti
Boa noite !
Faço Ads e estou resolvendo uma lista de struct para a aula.
Fiz um exercicío simples de cadastro , alocação dinâmica e impressão , só que ele n está dando certo , pois a impressão deve ser feita em ordem alfabética e eu fiz pelo algoritmo bubble sort só que n está ordenando , será que alguém poderia dar uma olhada e ver o que tem de errado o porque de não estar ordenando ?
#include<stdio.h>
#include<stdlib.h>
#include<locale.h>
#include<string.h>
#define X 3
typedef struct pessoa
{
char nome[40];
char endereco[100];
char telefone[13];
//struct definida;
};
void preenche(pessoa *p) ;
void mostra(pessoa *p);
void bublesort(pessoa *p);
int main() // programa principal;
{
setlocale(LC_ALL,"portuguese");
pessoa *p=NULL; // iguala a Null para inicializar o ponteiro p;
p=(pessoa*)malloc(sizeof(pessoa)*X); // alocação dinâmica;
int a;
for(a=0;a<(X);a++)
{
preenche(&p[a]); // acessa diretamente o end de *p;
}
bublesort(p); // ordena struct
mostra(p);
}
void preenche(pessoa *p)
{
char lixo[2]; // limpa o buffer;
printf("Insira seu nome \n");
scanf("%s",p->nome);
gets(lixo);
printf("Insira cidade,bairro, rua e nº\n");
gets(p->endereco);
printf("Insira O DDD e em seguida seu telefone\n");
gets(p->telefone);
gets(lixo); //limpa
system("cls");
}
void mostra(pessoa *p)
{
int a;
for(a=0;a<X;a++)
{
printf("Nome %s \n ",p->nome);
printf("Endereço %s \n",p->endereco);
printf("Tel : %s\n",p->telefone);
p++;
// imprime a struct;
}
}
void bublesort(pessoa *p)
{ pessoa aux;
int i, j;
for ( i=X-1; i > 0; i-- )
{
for ( j=0; j < i; j++ )
{
if (strcmp (p[j].nome , p[j+1].nome )<0)
{
strcpy(aux.nome,p[j].nome);
strcpy(aux.endereco,p[j].endereco);
strcpy(aux.telefone,p[j].telefone);
strcpy(p.nome,p[j].nome);
strcpy(p.endereco,p[j].endereco);
strcpy(p.telefone,p[j].telefone);
strcpy(p[j].nome,aux.nome);
strcpy(p[j].endereco,aux.endereco);
strcpy(p[j].telefone,aux.telefone);
}
}
}
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.