Jump to content
Chong92

Ordenar estruturas

Recommended Posts

Chong92

Boas pessoal,

Estou a fazer um trabalho da faculdade, e num dos exersicios tenho que retirar dados de dois ficheiros (ficheiro 1-num.cliente e nome do cliente; ficheiro 2 - num.cliente e conta) ordenálos (pelo numero de cliente) e imprimir no ecrã todas os dados dos clientes ordenados.

Penso que funcione com algo deste género

#include <stdio.h>
#include <string.h>

struct Data
{
    int num;
    char nome[20];
    int num2;
    int conta;
};
typedef struct Data Pessoas;


int main ()
{
Pessoas pessoa[10];                                         //ficheiro contêm dados de 10 pessoas
int d, aux;
int i;
FILE *fp1, *fp2;
fp1=fopen ("fich1.txt", "r");
fp2=fopen ("fich2.txt", "r");

for (i=0;i<10;i++)
{
    fscanf(fp1, "%d", &pessoa[i].num);                 //variável que vai ser Ordenada
    fscanf(fp1, "%s", pessoa[i].nome);
    fscanf(fp2, "%d", &pessoa[i].num2);
    fscanf(fp2, "%d", &pessoa[i].conta);
    printf("%d\n", pessoa[i].num);                         //mostra antes de ser ordenado
    printf("%s\n", pessoa[i].nome);                         //mostra antes de ser ordenado
    printf("%d\n", pessoa[i].conta);                         //mostra antes de ser ordenado
}


for(i=0;i<=10;i++)                                             //bubble sort
{
    for(d=0; d<=10-i-1;d++)
    {
            if (pessoa[d+1].num>pessoa[d+1].num)
            {
                aux=pessoa[d].num;
                pessoa[d].num=pessoa[d+1].num;
                pessoa[d+1].num=aux;
            }
    }
}

printf("\nDados dos clientes ordenados:\n");

for (i=0;i<10;i++)
{
printf("%d/%d\n", pessoa[i].num, pessoa[i].conta);         //tentativa só com pessoa e conta
}

fclose (fp1);
fclose (fp2);
}
/*

alguem me consegue ajudar a por isto a funcionar?

obrigado pela atenção

Edited by thoga31
GeSHi

Share this post


Link to post
Share on other sites
HappyHippyHippo

quantas entradas para o mesmo cliente podem existir no segundo ficheiro ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
Chong92

cada cliente só tem uma conta associada:

exemplo ficheiro 1

11 *num do cliente

rui *cliente correspondente

10

ze

12

rita

9

joana

exemplo ficheiro2:

11 *num do cliente como está no primeiro ficheiro

100 *conta bancária correspondete

10

110

12

120

9

Share this post


Link to post
Share on other sites
HappyHippyHippo

primeiro abres o ficheiro 1 e les o seu conteúdo.

depois abres o ficheiro 2 e guardas o seu conteúdo nos registos já criados.

depois podes usas a função qsort para ordenar o array


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.