Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Tri d'un tableau de chaînes de caractères [ Archives / Au secours ] (Manthis)

jeudi 20 avril 2006 à 21:35:24 | Tri d'un tableau de chaînes de caractères

Manthis


Bonjour,

Je poste ce message car je n'arrive pas à trouver de solution à mon problème. En fait j'ai un tableau de chaînes de caractères (un char **) que je voudrais trier par ordre alphabétique.

Quelqu'un pourrait-il m'expliquer comment je peux faire ça?

Merci


jeudi 20 avril 2006 à 23:28:54 | Re : Tri d'un tableau de chaînes de caractères

luhtor

Commence par faire une fonction qui te retourne la plus grande chaine (suivant l'ordre alphabétique) entre 2 chaines.
Apres, c'est trivial. Ca revient a trier un tableau d'entier, mais en utilisant la fonction que tu viens de faire comme relation d'ordre.
Note qu'il faut juste réordonner l'autre des pointeurs, rien d'autre.



vendredi 21 avril 2006 à 00:29:12 | Re : Tri d'un tableau de chaînes de caractères

zied86

tu peux utiluser la fonction "strcmp" qui compare deux chaine de caractere dans la bibliotheque <string.h>.

et voila un exemple de tri

for(i=(l-1);i>0;i=fin)/**l est le nombre d'element***/
{fin=0;
for(j=0;j<i;j++)
if(strcmp(livre[j+1],livre[j])<0)
{fin=j;
//permutation
p=livre[j];
livre[j]=livre[j+1];
livre[j+1]=p;
}
}

Ellouze Zied


vendredi 21 avril 2006 à 08:11:17 | Re : Tri d'un tableau de chaînes de caractères

gagah1

Membre Club
Si nombre d'élement est grand, utilise qsort(...) et strcmp(...) .

vendredi 21 avril 2006 à 11:40:33 | Re : Tri d'un tableau de chaînes de caractères

Ombitious_Developper

Réponse acceptée !

#include "stdlib.h"
#include "string.h"

int compare(const void *, const void *);

void Tri(char * Array[], unsigned int n)
{
    qsort( (char **)Array,  n,  sizeof(char *), compare);           
    return;
}

int compare(const void * elem1, const void * elem2)
{
    return strcmp( *(char **)elem1, *(char **)elem2);
}


vendredi 21 avril 2006 à 12:08:26 | Re : Tri d'un tableau de chaînes de caractères

Manthis

Merci beaucoup Ombitious_Developper c'est exactement ce que je cherchais: un tri de tableau en deux fonctions et en plus en utilisant l'algorithme qsort. Encore mille merci et je suis vraiment bluffé par le nombre de gens qui ont répondu, merci à tous...

vendredi 21 avril 2006 à 17:42:10 | Re : Tri d'un tableau de chaînes de caractères

Zootella

Pourquoi des strcmp ? suffit de comparer le premier caractère..

vendredi 21 avril 2006 à 19:16:35 | Re : Tri d'un tableau de chaînes de caractères

gagah1

Membre Club
qsort( (char **)Array, n, sizeof(char *), compare); ATTENTION: sizeof(char*) retourne 4 octets. Vaut mieux remplacer par la taille maximale de la chaine.

samedi 22 avril 2006 à 00:01:08 | Re : Tri d'un tableau de chaînes de caractères

Ombitious_Developper

Salut :

1- Pour Zootella
les comparaisons avec la fonctions "strcmp" sont nécessaires, voire obligatoires.
En effet un seul caractère ne permet pas de décider si une chaine est supérieure à une autre - Pensez au cas où les deux chaines commencent par la même lettre -
Comment faire ? il faut faire des strcmp pour résoudre cette problème.
Tant qu'il égalité on passe aux prochaines lettres.(on doit comparer toutes les chaînes)

2- Pour gagah1
On a tableau de chaines de caractère, càd de type char ** : c'est un tableau contenant les adresses des chaines de caractères sauvegardées quelque part dans la mémoire. Donc il doit contenir des adresses Pourqu' une case accueille une adresse on réserve 4 octes qui n'est autre que sizeof(char *).

Personnellement je préfère sizeof(char *) au lieu de 4 car c'est plus général et plus générique Dieu seul sait si l'adresse d'un pointeur va être toujours 4 octets.


samedi 22 avril 2006 à 09:57:50 | Re : Tri d'un tableau de chaînes de caractères

gagah1

Membre Club

J'ai pas remarqué que tu utilises un tableau de pointeur: char* array[];




Cette discussion est classé dans : tableau, tri, caractères, chaînes


Répondre à ce message

Sujets en rapport avec ce message

tri dans un tableau a 2 dimension en cpp [ par vivo95 ] Bonjours, je rechercherai comment faire pour faire un tri dans un tableau a 2 dimension, je sais le faire dans un tableua a 1 dim mais la je seche.Mer Affichage d'une chaîne de caractères [ par kalf2000 ] bonjour,j'ai un petit souci, je réussit à récupérer à partir d'un fichier texte une chaîne de caractère et à la mettre dans un tableau de caractère (c Tri endroit précis dans Tableau [ par MissSixty ] Salut ! Une question toute simple pour ceux qui connaissent qsort....Voilà je désire trier un tableau à partir de la ligne i que je lui fournis). La l Stockage de caractères dans une tableau ... [ par icedreamer ] Bonjour !Je continue sur ma lancée ...Comment dois-je faire pour stocker dans un tableau les données lues d'un fichier ?Code : char s[10] = ""; FI Recherche tri d'un tableau d'adresse objet [ par rtnode ] Bonjour à tous,je soumets un problème qui me semble à priori trés banal mais dont je n'ai pas trouvé de bonne solution.Dans nombre de cas, je dispose Tri de tableau [ par firemax ] Bonjour Je me demandais juste si il existais en C des fonctions de tri de tableau ou si il fallait la faire nous meme Car si il faut la faire nous Tri d'un tableau à 2 dimensions [ par vao ] salut tout le monde,J'ai un problème de taille, enfin pour moi qui débute en C++. Je dois trier un tableau en fonction de la valeur d'une colonne et s D'une AnsiString à un Tableau de char [ par sevenace ] Bonjour à tous, Mon AnsiString provient d'un EditBox. Je récupère le nombre de caractères comme ça:     AnsiString chaine = EditChaine->Text;     i Problème de Noobs [ par hippyz ] Alors voilà mon problème j'ai un tableau qui contient des caractères déjà prédifinis. Et j'ai un deuxiéme tableau dans lequel je mets des caractères q Help.... probleme avec un programme de tri de char [ par ratp ] Es ce que vous pouvez m'aider. j'ai réaliser un programme qui normalement doit permettre de trier les caracteres. mais sa ne marche pas. merci de m'ai


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,468 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.