• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

JoBlack

[Dúvida] Listagem ordenada por...

6 mensagens neste tópico

Olá pessoal

No prg que estou a fazer pedem-me que faça listagens de autores por 'nome' e por 'nacionalidade'. Já andei a ver se conseguia alguma coisa mas não consegui chegar a conclusões. O código que fiz e que coloco abaixo só me lista pela ordem natural com que foram inseridos os dados, ou seja, pelo nr.

Alguém me pode dar uma ajudita?

Obrigado.

Parte do código que interessa:


#define FICH3 "Autores.dat" 

struct autor
{
    int nr;
    char nome[50], nacion[20];
} AUT;

FILE *fa;

void ad_autor()
{
    fa=fopen(FICH3,"a+");
    system("CLS");

    while(fread(&AUT,sizeof(AUT),1,fa)==1)
    ;
    AUT.nr+=1;
    fseek(fa,0,SEEK_END);
    printf("\n\t Nome: ");
    fflush(stdin); gets(AUT.nome); AUT.nome[49]=' '; AUT.nome[50]='\0';
    printf("\n\t Nacionalidade: ");
    fflush(stdin); gets(AUT.nacion); AUT.nacion[19]=' '; AUT.nacion[20]='\0';
    fwrite(&AUT,sizeof(AUT),1,fa);
}



void List_autor()
{
   fa=fopen(FICH3,"r");
   system("cls");
   rewind(fa);
   
   printf("\n  Nr    Nome                            Nacionalidade");
   printf("\n  ---------------------------------------------------");
   while(fread(&AUT,sizeof(AUT),1,fa)==1)
   {
    printf("\n\n   %-5d%-32s%-20s", AUT.nr,AUT.nome,AUT.nacion);
   }
    getch();
    fclose(fa);
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado, já a tinha visto mas não consegui implementar o código nem sequer perceber como funciona...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que percebi estás a guardar as informações lidas num ficheiro. Não seria melhor guardar numa lista/árvore (ordenada)?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pelo que percebi estás a guardar as informações lidas num ficheiro. Não seria melhor guardar numa lista/árvore (ordenada)?

offtopic: MCC é o curso, o resto é recurso :thumbsup:
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lê todo o ficheiro para uma lista (ordenada) e depois volta a transpo-la para o ficheiro.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora