Problème avec la fonction qsort() en langage C !

Problème avec la fonction qsort() en langage C ! - C++ - Programmation

Marsh Posté le 11-05-2002 à 15:44:02    

Code :
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <string.h>
  4. int truc(const int a, const int b) {
  5.   if (a<b) return -1;
  6.   if (a==b) return 0;
  7.   if (a>b) return 1;
  8. }
  9. int main() {
  10.   int* tabint;
  11.   int nb,size;
  12.   int i;
  13.   nb=10;
  14.   size=10;
  15.   if ( (tabint = (int*) malloc(sizeof(int)*nb)) == NULL) {
  16.     perror("malloc" );
  17.     exit(0);
  18.   }
  19.   for (i=0;i<10;i++) {
  20.     tabint[i] = 15 - i;
  21.   }
  22.   for(i=0;i<10;i++) {
  23.     printf("%d\n",tabint[i]);
  24.   }
  25.   qsort(tabint,nb,sizeof(int),(void*)(&truc));
  26.   puts("-------------" );
  27.    for(i=0;i<10;i++) {
  28.     printf("%d\n",tabint[i]);
  29.   }
  30. }


 
 
comme ça ça marche, mais la fonction de comparaison n'est pas bonne, ça devrait pas marcher...
quand je corrige la fonction de comparaison, ça trie dans l'ordre décroissant !   :o

Reply

Marsh Posté le 11-05-2002 à 15:44:02   

Reply

Marsh Posté le 11-05-2002 à 15:59:07    

Ben oui là il doit comparer les adresses des pointeurs.
Mets plutôt:

Code :
  1. int truc(const void* pa, const void * pb) {
  2. int a = *((int*)pa);
  3. int b = *((int *)pb);
  4. if (a<b) return -1;
  5. if (a==b) return 0;
  6. if (a>b) return 1;
  7. }

 

[jfdsdjhfuetppo]--Message édité par Verdoux le 11-05-2002 à 15:59:59--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 11-05-2002 à 16:13:27    

Verdoux a écrit a écrit :

Ben oui là il doit comparer les adresses des pointeurs.
Mets plutôt:

Code :
  1. int truc(const void* pa, const void * pb) {
  2. int a = *((int*)pa);
  3. int b = *((int *)pb);
  4. if (a<b) return -1;
  5. if (a==b) return 0;
  6. if (a>b) return 1;
  7. }

 
 
 




 
MERCI bcp !  :jap:  
t'as mis dans le mil !
quand je pense le temps que j'ai perdu la dessus ...
je pensais que les parametres de la fonction était les objet à comparer et non des pointeurs sur ces objets !
 
décidemment, moi et les pointeurs ...  :/
 
merci encore  :hello:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed