Distinguer un caractère "lettre" d'un caractère quelconque - C++ - Programmation
Marsh Posté le 09-04-2003 à 13:07:22
Code :
|
Attention avec l'utilisation des macros, hein ?
(pas de ISCHARALPHA(getch) par exemple ...)
Marsh Posté le 09-04-2003 à 13:14:47
theShOcKwAvE a écrit : [cpp] |
ne connaissant pas l'utilisation des macros je vais plutot utiliser la fonction
Par contre tu as oublié de tenir compte des lettres accentuées
Merci quand même
Marsh Posté le 09-04-2003 à 13:30:51
Effectivement, mais ce ne sont que des cas particuliers à rajouter dans la liste.
En revanche, je ne suis pas sur que les lettres accentuées soient contigües dans toutes les tables ASCII ...
mais bon ... Bon courage !
Marsh Posté le 09-04-2003 à 14:04:39
Lancelot** a écrit : Salut à tous, |
Marsh Posté le 09-04-2003 à 14:08:07
ReplyMarsh Posté le 09-04-2003 à 14:11:37
Lancelot** a écrit : |
C'est pas la peine de raconter porte nawak si tu veux qu'on t'aide...
Marsh Posté le 09-04-2003 à 21:39:47
Je propose une autre solution beaucoup plus rapide a l'execution si on tient compte des caractères accentués.
Sous forme d'un tableau statique de bools contenant 256 valeurs. Une pour chaque caractère.
Si un caractère appartient a l'ensemble, il suffit de mettre "true" et sinon "false".
Apprès, on teste une caractère avec une fonction dans ce genre :
Code :
|
voila, et c'est très rapide.
J'ai utilisé ce type de code pour réaliser un interpreteur Basic.
Marsh Posté le 09-04-2003 à 22:40:16
ReplyMarsh Posté le 09-04-2003 à 22:56:42
Sr16 a écrit : Je propose une autre solution beaucoup plus rapide a l'execution si on tient compte des caractères accentués.
|
C'est vrai que ca a l'air pas trop mal, comme solution !
Ca gaspilles un peu de mem, mais c'est vrai que c'est assez négligeable !
Marsh Posté le 10-04-2003 à 03:39:52
theShOcKwAvE a écrit : |
256 octets, c'est pas beaucoup a côté de 1 giga de ram.
Et puis, ça peut resservire 10.000 fois dans le même programme.
Sans compter que si tu l'utilise plusieurs fois, le code généré etant beaucoup plus court que celui utilisé pour faire de multiples comparaisons, tu arrivera sûrement a gagner aussi de ce côté la.
Marsh Posté le 10-04-2003 à 15:30:00
theShOcKwAvE a écrit : C'est ce que je dis ... C'est négligeable ... |
Oui.
Tu notera que ce principe de tables peut être étendu a pas mal de choses. De la conversion de jeu de caractères a des tests d'appartenance a des ensembles.
Combiné avec les classes du C++, ça peut faire des trucs puissants.
Marsh Posté le 09-04-2003 à 12:42:10
Salut à tous,
j'aurais aimé utilisé la fonction toute faite "IsCharAlpha" mais comme y'a un bug dans le header winuser.h (j'utilise Visual C++), je voudrais savoir s'il existe une fct similaire permettant de savoir si un caractère est une lettre ou non.
Merci