Je sais pas comment trier avec quicksort en C

Fermé
florence - 20 oct. 2004 à 16:56
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 21 oct. 2004 à 01:34
Bonjour,
j'ai fais un tableau de structure mais j'aimerais savoir comment je peux trier un fichier par ordre alphabétique en utilisant quicksort(tout les exemples sur quicksort que j'ai trouvé sont fait avec des entiers et non des caractéres) , non seulement je dois le trier par ordre alphabétique mais si je me retrouve avec deux noms identiques je dois alors trier grace au deuxiéme nom: exemple anne bani et anne annie, c'est anne annie qui devrais se trouver avant anne bani, puis mon dernier probléme c'est que dans mon fichier les noms sont tous en lettres majuscule or la je dois juste écrire la premiére lettre du nom en majuscule puis la suite en minuscule, mon fichier a 1000 noms fait que je ne peux pas changer l'écriture sauf a l'aide d'une fonction que je ne sais ou trouvé.
Mon programme doit étre en c et je suis toute débutante. merci de votre aide.

2 réponses

Salut!

Un caractère est un entier 8 bit dont la valeur est le code ASCII.
0
merci mais c'est a dire? je comprends toujours pas.
0
Guki > florence
20 oct. 2004 à 21:27
Un nom quelconque est donc équivalent à un tableau d'entiers de 8 bit. En comparant la valeur ASCII de chaque 1er caractère, 2nd, nième on peut classer les noms.
0
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
21 oct. 2004 à 01:34
bien sûr, et en plus tu peux utiliser toupper() pour convertir un caractere en majuscule et tolower() pour le convertir en minuscules.

pour le classement, un exemple:
le code ascii de 'A' est 65 et le code ascii de 'B' est 66
'A' est donc plus petit que 'B'

pour comparer des chaines, utiliser strcmp(chaine1,chaine2)
qui retourne un nombre inférieur à 0 si chaine1>chaine2
0 si chaine1 et chaine2 sont identiques
et retourne un nombre positif si chaine1 <chaine2

enfin bref, c'était juste pour expliquer que
ce sont les codes ascii qui font la différence de grandeur
cordialement
¤
0