Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tri par ordre alphabétique d'un tableau.

1 réponse
Avatar
Poléon
J'ai un probl=E8me, a big one.

Je n'arrive =E0 trier les =E9lements d'un tableau par ordre alphab=E9tique.
Par exemple, j'entre
5
max
arbre
bonbon
viande
sucer

et =E7a 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 =3D (char**)sp1;
char** csp2 =3D (char**)sp2;
char* e1 =3D *csp1;
char* e2 =3D *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 =3D (int*)a;
int * pb =3D (int*)b;
int va =3D *pa;
int vb =3D *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 =3D 0; i < nbMots; i++)
scanf("%s", mots[i]);

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

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

free(mots);
return 0;
}

1 réponse

Avatar
Christian ASTOR
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 <tchar.h>

#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;
}