begin process at 2010 03 20 04:56:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Tri d'un tableau de chaînes de caractères


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tri d'un tableau de chaînes de caractères

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ée 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...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales