PDA

Visualizza la versione completa : [ C ] Ordinamento di una struttura da file


darthstark
16-01-2012, 11:11
Salve a tutti,
sto realizzando un anagrafe in C , ho fatto tutte le funzioni di modifica, ricerca, inserimenti etc..

il programma stutturato in modo che su una struttura sono indicati i dati personali di ogni persona, questi dati vengono salvati su un file txt ..

Dopo aver inserito i dati vorrei ordinare il file per cognome quindi avere il file txt sempre ordinato ma trovo dei problemi ... potete darmi una mano ?

ora inserisco la funzione d'inserimento senza l'ordinamento ... vi ringrazio gia da adesso ..

//inserisce un nuovo contatto nella anagrafe
void inserisci (link *anagrafe)
{

link ultimo, temp, nuovo;
system ("cls");
nuovo = (link) malloc (sizeof(persona));
if (!nuovo)
{
printf ("\n\tMemoria esaurita, impossibile inserire. -invio-\n\n\t");
return;
}
printf ("\n\tInserire il nome:\t");
scanf ("%s", nuovo->nome);
printf ("\n\tInserire il cognome:\t");
scanf ("%s", nuovo->cognome);
printf ("\tInserire il numero telefonico:\t");
scanf ("%s", nuovo->tel);
printf ("\n\tInserire la Data di nascita:\t");
scanf ("%s", nuovo->data);
printf ("\n\tInserire lo stato civile :\t");
scanf ("%s", nuovo->stato_civile);
printf ("\tInserire il domicilio:\t");
scanf ("%s", nuovo->domicilio);
printf ("\tInserire la professione:\t");
scanf ("%s", nuovo->professione);
nuovo->sx = nuovo->dx = NULL;
temp = *anagrafe;
if (temp)
{
ultimo = NULL;

while ((temp && strcmp(temp->cognome,nuovo->cognome)<0) && (temp && strcmp(temp->nome,nuovo->nome)<0))// Ordina per cognome
{
ultimo = temp;
temp = temp->dx;
}
if (ultimo)
{
nuovo->sx = ultimo;
nuovo->dx = ultimo->dx;
if (ultimo->dx)
ultimo->dx->sx = nuovo;
ultimo->dx = nuovo;
}
else
{
nuovo->dx = *anagrafe;
(*anagrafe)->sx = nuovo;
*anagrafe = nuovo;
}
}
else
*anagrafe = nuovo;

}

oregon
16-01-2012, 11:20
S ma la "mano" che chiedi sembra significare che tu voglia tutto il codice pronto per l'uso.

Questo non un posto dove si trovano programmatori "pronti per l'uso".

Devi proporre tu (!) delle soluzioni, indicare dove non funzionano e se hai "particolari" problemi da discutere.

darthstark
16-01-2012, 11:32
il problema che ordina appena inserisci i dati , ma quando esci dal programma rientri e inserisci nuovamente i dati non li ordina insieme agli altri ... esempio
inserisco

Alessandro Nesta

Alessandro Del Piero

e me li mette in ordine...
esco dal programma faccio riaprire

inserisco

Gianfranco Zola
Alessandro Matri

mi ordina questi due ma non lo fa anche con gli altri ....

quindi avro

Alessandro Matri
Gianfranco Zola
Alessandro Del piero
Alessando Nesta

Loading