trier un tableau à 2 dimensions de caracteres

trier un tableau à 2 dimensions de caracteres - C - Programmation

Marsh Posté le 11-06-2005 à 12:44:05    

Bonjour,
 
je possede un tableau comportant des noms de villes.
 
char Nom_ville[150][50];
 
je voudrais trier ce tableau de villes par ordre alphabétique.
 
Quelqu'un aurait il une idée pour m'aider car je galere à mort la sans y arriver.
 
Merci d'avance
 
pea
 
<exemple>
j'ai : paris,chartres,marseille,pau
et je voudrais : chartres,marseille,paris,pau

Reply

Marsh Posté le 11-06-2005 à 12:44:05   

Reply

Marsh Posté le 11-06-2005 à 13:39:22    

louisaha a écrit :

je possede un tableau comportant des noms de villes.

char Nom_ville[150][50];


je voudrais trier ce tableau de villes par ordre alphabétique.


qsort().  
 
C'est pas trivial, mais c'est puissant. Bien lire la doc (c'est standard). Entraine toi sur des tableaux plus simples (int, par exemple). Poste ton code si tu es bloqué.
 
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 11-06-2005 à 13:44:43    

oué alors qsort j'ai bien capté le principe, je l'ai utilisé correctement apparament puisque à la compilation pas d'erreur :)
 
mais ca trie pas mdrrr donc pas terrible.
 
voila ce que j'ai fait :
int compare (const void * a, const void * b)
{
return ( *(char**)a - *(char**)b );
}
 
qsort (Nom_ville, Nb_ville_graph, sizeof(char*), compare);
 
avec
char ** Nom_ville;
int Nb_vile_graph; //qui est mon nombre de ville au total
 
mais ca trie pas ....

Reply

Marsh Posté le 11-06-2005 à 13:51:38    

louisaha a écrit :

oué alors qsort j'ai bien capté le principe, je l'ai utilisé correctement apparament puisque à la compilation pas d'erreur :)

return ( *(char**)a - *(char**)b );




Non. Il faut utiliser strcmp() qui est fait pour ça.
 
D'autre part, il faut faire attention à la définition du tableau (char à 2 dimensions, pointeurs sur char... Il faut être précis, car l'appel de qsort() en dépend...)


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 11-06-2005 à 14:00:39    

hummmm que veux tu dire par la definition du tableau ...
 
je vois pas non plus ce qui va changer avec strcmp car je pensais que c'etait pas mal ce que j'avais fait :p lol

Reply

Marsh Posté le 11-06-2005 à 14:05:08    

et faut pas faire sauter les const comme ça !

Reply

Marsh Posté le 11-06-2005 à 14:23:20    

louisaha a écrit :

hummmm que veux tu dire par la definition du tableau ...


char a[12][34];


ou

char *a[12];


etc.

Citation :

je vois pas non plus ce qui va changer avec strcmp<...>


Tu veux bien faire une comparaison de chaines ? Alors strcmp(), c'est tout. Relis ton livre de C...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
Reply

Marsh Posté le 11-06-2005 à 15:30:31    

parfait j'ai reussi merci beaucoup

Reply

Sujets relatifs:

Leave a Replay

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