Identifier lettre alphabet C++
Résolu/Fermé
Sarvock
Messages postés
20
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
-
18 févr. 2009 à 09:35
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 18 févr. 2009 à 16:29
Char Snipeur Messages postés 9813 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 18 févr. 2009 à 16:29
A voir également:
- Afficher l'alphabet en c
- Code ascii alphabet - Guide
- Caractère spéciaux alphabet - Guide
- Code binaire alphabet - Guide
- Alphabet gsm ou automatique - Forum Mobile
- Alphabet binaire ✓ - Forum Programmation
5 réponses
reltak
Messages postés
261
Date d'inscription
mercredi 22 août 2007
Statut
Membre
Dernière intervention
14 janvier 2012
41
18 févr. 2009 à 10:09
18 févr. 2009 à 10:09
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é :/)
Reltak.
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.
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
18 févr. 2009 à 10:21
18 févr. 2009 à 10:21
Salut.
Si tu fait du C++, utilise les string. Il y a alors la fonction : https://en.cppreference.com/w/cpp/string/basic_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')
Si tu fait du C++, utilise les string. Il y a alors la fonction : https://en.cppreference.com/w/cpp/string/basic_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')
Sarvock
Messages postés
20
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
11
18 févr. 2009 à 14:49
18 févr. 2009 à 14:49
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
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
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
18 févr. 2009 à 14:54
18 févr. 2009 à 14:54
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.
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.
Sarvock
Messages postés
20
Date d'inscription
mercredi 12 novembre 2008
Statut
Membre
Dernière intervention
3 mai 2010
11
18 févr. 2009 à 15:00
18 févr. 2009 à 15:00
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!!!
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!!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
18 févr. 2009 à 16:29
18 févr. 2009 à 16:29
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.
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.