Rechercher : dans
Par :

Identifier lettre alphabet C++

Dernière réponse le 18 fév 2009 à 16:29:43 Sarvock, le 18 fév 2009 à 09:35:52 
 Signaler ce message aux modérateurs

Bonjour,

Je dois faire un programme qui interprète une expression logique. J'ai une variable "expression"=>chaîne de 26 caractère et je voudrais en extraire les lettres...Comment peut-on faire pour identifier seulement les lettres de l'alphabet sans faire un test : if ((expression[i]=='a')||...||(expression[i]=='z'???
Merci de votre attention!

Configuration: Linux
Firefox 2.0.0.16

Meilleures réponses pour « identifier lettre alphabet C++ » dans :
[Windows] Ecrire en alphabet arabe Voir°~~RÉCAPITULATIF ET LIENS (forum)~~° La prise en charge correcte de la langue arabe est optimale dans les versions anglais/arabe de Windows. Pour les autres versions, c’est possible mais moins concluant. Merci de nous donner des infos pour...
Lettres types Emploi VoirLettres types Emploi Quelques liens pour les personnes en manque d'inspiration ... http://www.learn4good.com/jobs/rediger_un_cv_efficace.htm http://www.letudiant-emploi.fr/pages/default.asp?page=/emploi/lettres http://www.la...
Sed - Insérer un espace entre chaque lettre VoirInsérer un espace entre chaque lettre $ echo -e "bonjour la vie\net bonjour à toi" | sed 's/./& /g' b o n j o u r l a v i e e t b o n j o u r à t o iL'inconvénient c'est que l'espace naturel entre chaque mot est doublé. Pour pallier à...
Langage C - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractères ? Une chaîne de caractères (appelée string en anglais) est une suite de caractères, c'est-à-dire un ensemble de symboles faisant partie du jeu de caractères, défini par le code ASCII. En langage C, une chaîne...

1

reltak, le 18 fév 2009 à 10:09:37

Salut

Les lettres de l'alphabet ne sont en fait que des chiffres hexadécimaux pour le système. Chaque caractère possède un chiffre hexa qui lui correspond.
En fait quand tu déclare un "char" en C++, tu déclare un entier... qui pourra être interprété par le système comme un caractère ASCII.

donc si tu veux savoir si ton caractère est une lettre, tu testes la valeur hexa.

http://www.table-ascii.com/

Sur cette page tu trouveras ce qu'on appelle la table ASCII répertoriant les caractères et leurs valeurs hexadécimales.

Pour chaque caractère tu teste s'il est supérieur à la valeur du 'a' et inférieur à la valeur du 'z'.

Il est peut etre possible de faire ça mais c'est pas sur (j'ai jamais testé :/)

if(caractere >= 'a' && caractere <= 'z')
...


Reltak.

Répondre à reltak

2

Char Snipeur, le 18 fév 2009 à 10:21:57

Salut.
Si tu fait du C++, utilise les string. Il y a alors la fonction : http://www.cppreference.com/wiki/string/find_first_not_of
qui te permettra de voir si il y a un caractère que tu ne souhaite pas.
Sinon, tu es obligé de balayer la chaîne de caractère, mais comme le suggère Reltak, tu peut utiliser :
if(caractere[i] >= 'a' && caractere[i] <= 'z' || caractere[i] >= 'A' && caractere[i] <= 'Z')
Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

3

Sarvock, le 18 fév 2009 à 14:49:19

Pour info => if(caractere[i] >= 'a' && caractere[i] <= 'z' || caractere[i] >= 'A' && caractere[i] <= 'Z')
Ne fonctionne pas => interdit comparaison entre un pointeur et un entier!!!

if ((une_expression[i] >='41')&&(une_expression[i]<='5A')) ne fonctionne pas non plus (41 hex(A) et 5A hex(Z))
=> g++ -c fonctions_table_verite.cpp
fonctions_table_verite.cpp:24:27: attention : constante caractère multi-caractères
fonctions_table_verite.cpp:24:54: attention : constante caractère multi-caractères
fonctions_table_verite.cpp: In function 'void extraction(char*, char*)':
fonctions_table_verite.cpp:24: attention : comparaison est toujours fausse en raison d'une gamme limitée de type de données
fonctions_table_verite.cpp:24: attention : comparaison est toujours vraie en raison d'une gamme limitée de type de données

Répondre à Sarvock

4

Char Snipeur, le 18 fév 2009 à 14:54:26

Caractere[i] >= 'a'
si caractere est de type char* ou char[]
où vois tu un pointeur ?????
Si tu veux utiliser les valeur hexadécimales :
caractere[i] >= 0x41
si ma mémoire est bonne. Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur

5

Sarvock, le 18 fév 2009 à 15:00:22

If ((une_expression[i] >=0x41)&&(une_expression[i]<=0x5A)) fonctionne correctement!!! Merci à vous.

Euh je crois que char expression[26] est considéré comme une "liste" de pointeurs vers les éléments que tu as dans chaque case comme pour un tableau! Mais c'est lorsque je compilait qu'il m'affichait cette erreur!!!

Merci quand même!!!

Répondre à Sarvock

6

 Char Snipeur, le 18 fév 2009 à 16:29:43

Non, char expression[26] est un tableau.
donc expression[i] est un caractère et non un pointeur.
Il est plus propre de faire :
(une_expression[i] >='a')
car c'est plus visuel, que si par hasard la table de caractère change, le code sera toujours valable. Salutation ! (il faut bien que vous compreniez que j'ai TOUJOURS raison)
Char Snipeur

Répondre à Char Snipeur
Collection CommentÇaMarche.net