Sono riuscito ad unire i due file.Questa è la funzione:
codice:
void merge(){
scarpa_uomo su;
scarpa_donna sd;
scarpa s[U+D];
u.open("uomo.dat",ios::in|ios::binary);
d.open("donna.dat",ios::in|ios::binary);
f.open("scarpa.dat",ios: out|ios::binary);
while(u){
u.read((char*)&su,sizeof(scarpa_uomo));
f.write((char*)&su,sizeof(scarpa_uomo));
}
while(d){
d.read((char*)&sd,sizeof(scarpa_donna));
f.write((char*)&sd,sizeof(scarpa_donna));
}
u.close();
d.close();
f.close();
f.open("uomo.dat",ios::in|ios::binary);
f.read((char*)&su,sizeof(scarpa_uomo));
for(int i=0;i<U;i++){
s[i]=su;
f.read((char*)&su,sizeof(scarpa_uomo));
}
f.read((char*)&sd,sizeof(scarpa_donna));
for(int i=U;i<D+U;i++){
s[i]=sd;
f.read((char*)&sd,sizeof(scarpa_donna));
}
f.close();
}
Ora per il quicksort ho creato una funzione da richiamare in quella precedente.
codice:
void qsort(int a[U+D],int inf,int sup){
int pivot=a[(inf+sup)/2];
int i=inf;
int j=sup;
int temp;
do{
do{
i++;
}while(a[i]<pivot);
do{
j--;
}while(a[j]>pivot);
if(i<j){
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}while(i<=j);
if(inf<j){
qsort(a,inf,j);
}
if(i<sup){
qsort(a,i,sup);
}
}
Ora non capisco come richiamare la funzione.Il primo valore in parentesi della funzione quicksort deve essere di tipo scarpa (scarpa s[U+D]) ?