Tri par ordre alphabétique d'un tableau.

Le
Poléon
J'ai un problème, a big one.

Je n'arrive à trier les élements d'un tableau par ordre alphabétique.
Par exemple, j'entre
5
max
arbre
bonbon
viande
sucer

et ça doit me renvoyer :
arbre
bonbon
max
sucer
viande

Le code suivant ne fonctionne pas, pouvez vous m'aider :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 1000

int comparemots(const void* sp1,const void* sp2 )
{
char** csp1 = (char**)sp1;
char** csp2 = (char**)sp2;
char* e1 = *csp1;
char* e2 = *csp2;
return strcmp(e1,e2);
}

int compare (const void * a, const void * b) /*on fixe deux valeurs de
type pointeur a et b*/
{
int * pa = (int*)a;
int * pb = (int*)b;
int va = *pa;
int vb = *pb;
if (va<vb)
return 1;
else
return 0;
}


int main()
{
int nbMots;
int i;
char* mots[MAX];

scanf("%d", &nbMots);

malloc(nbMots*sizeof(char));

for (i = 0; i < nbMots; i++)
scanf("%s", mots[i]);

qsort(mots, nbMots, sizeof(mots), compare);

for (i= 0; i< nbMots; i++)
printf("%s", mots[i]);

free(mots);
return 0;
}
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Christian ASTOR
Le #19842571
Poléon wrote:

Je n'arrive à trier les élements d'un tableau par ordre alphabétique.
Par exemple, j'entre
5
max
arbre
bonbon
viande
sucer

et ça doit me renvoyer :
arbre
bonbon
max
sucer
viande

Le code suivant ne fonctionne pas, pouvez vous m'aider :



Tu t'emmêles les pattes avec ta fonction de comparaison...

Par ex =>

#include <iostream>
#include
#define ARRAYSIZE(a) (sizeof(a)/sizeof(a[0]))

static int compare (const void *e1, const void *e2)
{
return strcmp(*(char **)e1, *(char **)e2);
}

int _tmain(int argc, _TCHAR* argv[])
{
char* szWords[] = {"max", "arbre", "bonbon", "viande", "sucer"};
int nSize = ARRAYSIZE(szWords);
for (int i= 0; i<nSize; i++)
printf("%sn", szWords[i]);
printf("n");
qsort((void*)szWords, nSize, sizeof(szWords[0]), compare);
for (int i= 0; i<nSize; i++)
printf("%sn", szWords[i]);
return 0;
}
Publicité
Poster une réponse
Anonyme