1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| void trie_index()
{
struct compte_index temp;
int idx,
taille_reduite,
debut,
fin,
milieu,
pos,
indice;
struct compte_index *ptr_tab;
ptr_tab = (struct compte_index*) malloc(nbre_vrais_enreg*sizeof(struct compte_index));
ptr_flux_index = fopen(fichier_index, "r+b");
if (ptr_flux_index == NULL)
ptr_flux_index = fopen(fichier_index, "w+b");
fseek(ptr_flux_index, sizeof(struct compte_index), SEEK_SET);
for(indice=0;indice<nbre_vrais_enreg;indice++)
fread(&ptr_tab[indice], sizeof(struct compte_index), 1, ptr_flux_index);
// si je place un clrscr(); ici il s'exécute
debut=0;
fin=nbre_vrais_enreg-1;
while (debut<=fin)
{
milieu = (debut + fin)/2;
if (debut == fin)
{
if (ptr_tab[milieu].num_de_cpt.num > ptr_tab[nbre_vrais_enreg-1].num_de_cpt.num)
pos = milieu-1;
else
pos = milieu ;
}
else
{
if (ptr_tab[milieu].num_de_cpt.num > ptr_tab[nbre_vrais_enreg-1].num_de_cpt.num)
fin = milieu - 1;
else
debut = milieu + 1;
}
}
// si je place un clrscr(); ici il ne s'exécute pas
temp=ptr_tab[nbre_vrais_enreg-1];
for(idx=nbre_vrais_enreg-2;idx>=pos;idx--)
{
ptr_tab[idx+1]=ptr_tab[idx];
}
ptr_tab[pos]=temp;
fseek(ptr_flux_index, sizeof(struct compte_index), SEEK_SET);
for(indice=0;indice<nbre_vrais_enreg;indice++)
fwrite(&ptr_tab[indice], sizeof(struct compte_index), 1, ptr_flux_index);
free(ptr_tab);
fclose(ptr_flux_index);
} |
Partager