Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2842 connectés 

  FORUM HardWare.fr
  Programmation
  C++

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°137528
djoh
Posté le 11-05-2002 à 15:44:02  profilanswer
 

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

mood
Publicité
Posté le 11-05-2002 à 15:44:02  profilanswer
 

n°137532
verdoux
And I'm still waiting
Posté le 11-05-2002 à 15:59:07  profilanswer
 

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]

n°137539
djoh
Posté le 11-05-2002 à 16:13:27  profilanswer
 

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:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

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

 

Sujets relatifs
[mySQL] problème avec des sous requetes.. je pige pas...[javascript] fonction onChange=onBlur ?
les fonction en c[MYSQL] Probleme avec les valeur NULL
[UNIX] problème avec les sémaphoresProbleme de Modeles dans DREAMWEAVER , SOS !!!
[PHP] fonction copyprobleme de décalage horaire (heure EST(canada)/GMT)
[C] fonction GETOPTDelphi : probleme de IF
Plus de sujets relatifs à : Problème avec la fonction qsort() en langage C !


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)