Salve a tutti, ho da proporvi un testo di un esercizio che richiede l'ordinamento per mezzo di confronti successivi, partendo da alcuni dati contenuti in un file. Come risolvereste l'algoritmo che effettua questo ordinamento. E' ovvio che conviene utilizzare insertionsort perchè questi record vengono letti da un file ed inseriti in un array di puntatori. Io per ora ho abbozzato questo codice, che pare non funzionare, ma non mi piace la soluzione di dover utilizzare i flag booleani.
Testo:
Dato il file binario impiegati contenente record del tipo
struct Tipostud{
string Nome; char[]
string Cognome; char[]
int anno;
int mese;
int giorno;
string Ruolo; char[]
double stipendio;
};
Per ogni ruolo ordinare gli impiegati per stipendio, a
parità di stipendio per cognome, a parità di cognome per
età,utilizzando eventualmente un array di puntatori.
codice:
void insort(Pstud Punt[],int n,Pstud Temp){
int j;
Punt[0]=Temp;
j=n-1;
bool cecks=false,ceckc=false;
while(Punt[j]->stipendio>=Punt[0]->stipendio){
cecks=true;
Punt[j+1]=Punt[j];
j--;
}
if(cecks && Punt[j]->stipendio==Punt[0]->stipendio &&
stricmp(Punt[j]->Cognome,Punt[0]->Cognome)>=0) {
ceckc=true;
Punt[j+1]=Punt[j];
j--;
}
if(ceckc && stricmp(Punt[j]->Cognome,Punt[0]->Cognome)==0 &&
DataNum(*Punt[j])>DataNum(*Punt[0])) {
Punt[j+1]=Punt[j];
j--;
}
Punt[j+1]=Punt[0];
}
Grazie e tutti coloro che parteciperanno.