Trier des caracteres avec accents ?

Trier des caracteres avec accents ? - C - Programmation

Marsh Posté le 11-07-2006 à 18:44:29    


Salut,
 
Comment faire, en C ou C++,  pour trier des caracteres accentues avec des caracteres
non-accentues afin d'obtenir un tri equivalent a celui d'un dictionnaire. Je veux dire que les
e, è, é et ê soient tous ensemble.
 
 
Merci

Reply

Marsh Posté le 11-07-2006 à 18:44:29   

Reply

Marsh Posté le 11-07-2006 à 19:12:48    

bobdevroot a écrit :

Salut,
 
Comment faire, en C ou C++,  pour trier des caracteres accentues avec des caracteres
non-accentues afin d'obtenir un tri equivalent a celui d'un dictionnaire. Je veux dire que les
e, è, é et ê soient tous ensemble.
 
 
Merci


 
C'est à toi d'implémenter ta propre fonction "strcmp" qui comparera tes chaînes en considèrerant que "é" et "è" sont identiques (ainsi que "a" et "à", "o" et "ô", etc...)
En C++, tu peux créer ta propre classe avec son propre opérateur "=="...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 12-07-2006 à 15:32:38    


Merci Sve@r !
 
Est-ce que tu peux m'en dire un peu plus sur l'usage dans une classe
de "son propre operateur" ?

Reply

Marsh Posté le 12-07-2006 à 16:16:12    

Ca devient du C++, et non du C.
En C on ne peut pas redéfinir d'opérateur. Comme dit Sve@r, il faut écrire une fonction qui fait exactement ce que tu veux (je pense que le plus simple est, dans cette fonction, de convertir tous les caractères accentués en leur équivalent sans accent, puis de faire le tri normalement, et de réafficher/retourner les chaînes originales avant conversion)


Message édité par Elmoricq le 12-07-2006 à 16:16:25
Reply

Marsh Posté le 12-07-2006 à 21:20:50    

bobdevroot a écrit :

Merci Sve@r !
 
Est-ce que tu peux m'en dire un peu plus sur l'usage dans une classe
de "son propre operateur" ?


Comme le dit Elmoricq, cela devient du C++. Mais pour résumer, il t'es possible de définir une classe quelconque gérant n'importe quoi, puis de redéfinir pour cette classe n'importe quel opérateur parmi les opérateurs classiques (+, -, ++, <<, [], etc...).
Ensuite, une fois que tu as redéfini l'opérateur que tu veux, par exemple "==" (et que t'as donc indiqué comment l'opérateur "==" travaillera quand on lui donnera 2 membres de cette classe à traiter), il t'es possible de faire "if (a == b)" avec "a" et "b" des variables du type de cette classe. C'est l'avantage du C++. Tu définis tout à l'avance puis t'as plus qu'à utiliser ce que tu veux comme t'en as envie...


Message édité par Sve@r le 12-07-2006 à 21:37:50

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed