Erro com ordenação de alocação dinâmica
Bom dia pessoal,
Sou novo no fórum, li a respeito de algumas regras, mas posso estar fazendo algo errado, caso faça, me desculpem.
Estou com um problema num código que estou fazendo para fazer uma ordenação, porém, eu rodo ele e ele funciona, mas quando escolho a opção de ordenar, a tela só pisca, não entra nela.. Poderiam dar uma olhada pra ver o que estou fazendo de errado?
PS: Não se assustem com o tamanho do código rs, é apenas o ''Ordena'' que estou com dificuldades.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct pasta {
char nome[80];
int codigo;
struct pasta *proximo;
struct pasta *anterior;
};
struct pasta *inicio, *ultimo, dados[1000];
int q=0;
int menu();
void listaligada (struct pasta *);
void cadastro();
void ordena();
void grava();
void abre();
void exclui();
void altera();
void lista();
main()
{
int i;
inicio = ultimo = NULL;
for ( ; ; ) {
i=menu();
switch(i) {
case 1: cadastro();
break;
case 2: grava(); break;
case 3: abre(); break;
case 4: ordena(); break;
case 5: lista(); break;
case 6: exclui(); break;
case 7: altera(); break;
case 8: exit(1); break;
}
}
}
int menu()
{
int i;
system("cls");
printf("\t\tMenu\n\n");
printf("\t1. Cadastro\n");
printf("\t2. Grava\n");
printf("\t3. Abre\n");
printf("\t4. Ordena\n");
printf("\t5. Lista\n");
printf("\t6. Exclui\n");
printf("\t7. Altera\n");
printf("\t8. Sai\n");
printf("\nEntre com a opcao: ");
scanf("%d",&i);
return i;
}
void listaligada (struct pasta *p) {
if (inicio == NULL) {
inicio = ultimo = p;
p->proximo = NULL;
p->anterior = NULL;
return;
}
ultimo->proximo = p;
p->anterior = ultimo;
p->proximo = NULL;
ultimo = p;
}
void cadastro() {
struct pasta *p;
static int i=0;
system("cls");
printf("\t\tCadastro\n\n");
printf("\tEntre com os dados. \nTecle apenas ENTER sobre o campo 'nome' sem digitar nada para sair:");
for( ; ; ) {
printf("\nNome %d:", i+1);
p = (struct pasta *) malloc (sizeof(struct pasta));
fflush(stdin);
gets(p->nome);
if(!p->nome[0])
break;
p->codigo = ++i;
listaligada(p);
}
}
void ordena() {
int i,j;
struct pasta temp;
system ("cls");
printf("\n\t\tNomes ordenados:\n\n");
for(i=0 ; i<q ; i++)
for(j=i+1 ; j<q ; j++)
if (dados[i].nome,dados[j].nome>0)
{
temp=dados[i];
dados[i]=dados[j];
dados[j]=temp;
}
}void grava() {}
void abre() {}
void exclui() {}
void altera() {}
void lista() {
struct pasta *p;
system ("cls");
printf("\n\t\tLista\n\n");
p = inicio;
while (p!= NULL) {
printf("\n%s", p->nome);
printf("\nCodigo: %d", p->codigo);
p = p->proximo;
printf("\n---------\n");
}
system("pause");
}Discussão (4)
Carregando comentários...