Bonjour,
J'explique mon probleme:
j'ai trois tableaux, un contenant des int,un contenant de float et un contenant des chaines de caracteres( char * ).Le but est de creer une fonction qui permettent de trier ces trois types de tableaux.
Pour cela j'utilise une fonction générale qui utilise le tri a bulle.Cette fonction a pour prototype :
La fonction recoit comme premier argument le pointeur sur la premiere case du tableau(le nom du tableau);le deuxieme est le nombre de case du tableau;le troisieme la taille en octet de chaque case du tableau et le quatrieme c'est un pointeur sur une fonction de comparaison qui recoit deux const void* et qui renvoit un int.
Code : Sélectionner tout - Visualiser dans une fenêtre à part void qsort ( void * base, size_t num, size_t size, int ( * comparator ) ( const void *, const void * ) );
Le probleme est que dans cette fonction, quand je compare deux cases voisines à l'aide de fonctions de comparaisons(que je n'ai pas mentionnées ici,il y en a une pour chaque type) passées en parametre de la fonction qsort,et qui se trouve que le premier élément est plus grand que le suivant alors je dois echanger les deux cases et mon probleme est là :
je dois normalement utiliser une variable temporaire pour l'échange mais je ne sais pas de quel type déclarer cette variable temporaire vu que les éléments comparés peuvent etre soit tout 2 des int, ou des float ou des char*.
Peut etre il y aurait une solution de creer une variable de type void (pas void *) ou sinon une autre solution?
Merci
Partager