Ajout d'une fonction de tri fusion normalement juste.

master
Yann CHAMPEAU 3 years ago
parent 15028838ed
commit 25d4cbe9ce

@ -101,6 +101,14 @@ int rechercheIUT(VilleIUT* tab[],int lTab,char mot[]){
return -1;
}
int* tabcpy(int tab[], int tlogi){
int ret[tlogi];
for(int i=0; i<tlogi; i++){
ret[i]=tab[i];
}
return ret;
}
//Listes chainées
int existeDep(MaillonDep* liste, char* dep){
MaillonDep* m=liste;

@ -77,6 +77,14 @@ int rechercheIUT(VilleIUT* tab[],int lTab,char mot[]);
/**
* \brief recopie un tableau d'entiers.
* \param [in] tab Tableau à copier.
* \param [in] tlogi taille logique du tableau.
* \return la copie du tableau.
*/
int* tabcpy(int tab[], int tlogi);
//Fonctions relatives aux listes chaînées :
/**

@ -147,7 +147,7 @@ void Admissions(candidat* tcandidat[],int tlogi)
//Tri alphabétique
//trie_??(tabIDCandidatAdmis);------------------------------------------------------
//Tri sur la note
trie_fusion(tabNoteCandidatAttente,attente);
tri_fusion(tabNoteCandidatAttente,attente);
//Save Admis liste
FILE *fadmis;
if((fadmis=fopen("src/Database/ListeAdmisInfo.bin","wb"))==NULL)
@ -180,7 +180,7 @@ int* fusion(int* tabfusion1,int tlogi1, int* tabfusion2, int tlogi2)
int i1=0, i2=0;
while (i1<tlogi1&&i2<tlogi2)
{
if(tabfusion1[i1]=<tabfusion2[i2])
if(tabfusion1[i1]<=tabfusion2[i2])
{
retTab[i1+i2]=tabfusion1[i1];
i1++;
@ -221,4 +221,53 @@ int* tri_fusion(int* tabNote, int* tabIDCandidatAttente, int taille)
return fusion(tri_fusion(tabNote,tabIDCandidatAttente,taille/2),taille/2,\
tri_fusion(tabNote+taille-taille/2,tabIDCandidatAttente+taille-taille/2,taille-taille/2),taille-taille/2);
}
}
}
/*
int* fusion(tabG,tailleG,tabNoteG,tabD,tailleD,tabNoteD,retNote){
int ret[tailleG+tailleD]
int iG=0, iD=0;
while (i1<tlogi1&&i2<tlogi2){
if(tabNoteG[iG]<=tabNoteD[iD]){
retNote[iG+iD]=tabNoteG[iG];
ret[iG+iD]=tabG[iG];
iG++;
}
else{
retNote[iG+iD]=tabNoteD[iD];
ret[iG+iD]=tabD[iD];
iD++;
}
}
if (iG==tailleG){
while(iD<tailleD){
retNote[iG+iD]=tabNoteD[iD];
ret[iG+iD]=tabD[iD];
iD++;
}
}
if (iD==tabD){
while(iG<tabG){
retNote[iG+iD]=tabNoteG[iG];
ret[iG+iD]=tabG[iG];
iG++;
}
}
}
int* tri_fusion_rec(int tabIDCandidatAttente[], int tabNote[], int taille){
if(taille==1) return tabIDCandidatAttente;
int tabNoteG[taille/2], tabNoteD[taille-taille/2], retNote[taille];
tabNoteG=tabcpy(tabNote,taille/2);
tabNoteD=tabcpy(tabNote+taille/2,taille);
int ret[taille];
ret=fusion(tri_fusion_rec(tabIDCandidatAttente,tabNoteG,taille/2),taille/2,tabNoteG,\
tri_fusion_rec(tabIDCandidatAttente+taille/2,tabNoteD,taille-taille/2),taille-taille/2,tabNoteD,retNote);
tabNote=tabcpy(retNote,taille);
return ret;
}
int* tri_fusion(int tabIDCandidatAttente[], int tabNote[], int taille){
int notes[taille];
notes=tabcpy(tabNote,taille);
return tri_fusion_rec(tabIDCandidatAttente,notes,taille);
}*/
Loading…
Cancel
Save