Pesquisar na Comunidade
Mostrando resultados para as tags ''#struct''.
Encontrado 2 registros
-
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); } } } }
-
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); } } } }