Marge sort,un pò di aiuto

di il
1 risposte

Marge sort,un pò di aiuto

Ciao,sono "nuovo" ho implementato questo codice, dovrei mettere in ordine dei record presi da un primo e secondo file,e metterli in ordine crescente in un terzo,non riesco però a capire come far rimanere il puntatore dell'fgets per fare il confronto tra il secondo record(secondo file) e il primo record(del primo file),per farlo poi in successione tra tutti.

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

typedef struct{
int matricola;
char cognome[30];
char nome[30];
}TPersona;

void merge_sort(char [],char f2[],char []);
void html_crea_file(char []);


int main(){
char [80],f2[80],f3[80];

strcpy(f1,"f1.txt");
strcpy(f2,"f2.txt");
strcpy(f3,"f3.txt");
merge_sort(f1,f2,f3);
html_crea_file(f3);

system("pause");
return 0;

system("pause");
return 0;
}
void merge_sort(char [],char f2[],char []){
char st[200];
char no1[30];
char no2[30];
char co1[30];
char co2[30];
char mat1[3];
char mat2[3];
char elim[200];
char st2[200];

TPersona a;
TPersona b;

int c=1;
int s=1;

FILE *fp1=fopen(f1,"r");
FILE *fp2=fopen(f2,"r");
FILE *fp3=fopen(f3,"w");


while(!feof(fp1) && !feof(fp2)){
fgets(st,200,fp1);
sscanf(st,"%[^'|']|%[^'|']|%[^'\n']\n",mat1,co1,no1);
a.matricola=atoi(mat1);
strcpy(a.cognome,co1);
strcpy(a.nome,no1);


fgets(st2,200,fp2);
sscanf(st2,"%[^'|']|%[^'|']|%[^'\n']",mat2,co2,no2);
b.matricola=atoi(mat2);
strcpy(a.cognome,co2);
strcpy(b.nome,no2);
if(a.matricola<b.matricola){
fprintf(fp3,"%d %s %s\n",a.matricola,a.cognome,a.nome);
}else{
fprintf(fp3,"%d %s %s\n",b.matricola,b.cognome,b.nome);
}
c++;

}

}


Primo file

1|ROSSI|MARIO
3|BIANCHI|LUIGI
5|VERDI|ROSA

Secondo file

2|ROSSINI|ANTONIO
4|VERDONE|ANNA MARIA
7|AZZURRI|UGO

Come dovrebbe uscire
1|ROSSI|MARIO
2|ROSSINI|ANTONIO
3|BIANCHI|LUIGI
4|VERDONE|ANNA MARIA
5|VERDI|ROSA
7|AZZURRI|UGO

1 Risposte

  • Re: Marge sort,un pò di aiuto

    Ciao, prova a inserire tutto il codice all'interno degli appositi tag:
    [ code ]
    il codice va qui
    [ /code ]
    (il tutto senza spazi).
    Inoltre, usa una corretta indentazione. In questo modo renderai tutto più chiaro, oltre a facilitare il lavoro di chi vuole aiutarti!
Devi accedere o registrarti per scrivere nel forum
1 risposte