C++ / Tirer la première lettre d'un mot et la convertir en chiffre

Résolu/Fermé
Anat94 - Modifié le 29 août 2019 à 12:50
Anat944 Messages postés 6 Date d'inscription jeudi 8 novembre 2018 Statut Membre Dernière intervention 29 août 2019 - 29 août 2019 à 14:38
Bonjour,
J'essaye de faire fonctionner un programme en c++ mais sans succès....
L'utilisateur doit saisir un nom et mon programme prends la première lettre et la convertit en chiffre ( A=1,B=2 etc....) . Cependant je n'y arrive pas.... Je pense qu'il y a un soucis dans mon tableau mais impossible de le résoudre.
Par avance merci .
Un novice en programmation.


#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;

int main()
{
char prem[10];
cin >> prem;
char nom = prem[0];
int nbe;
nbe = nom;
cout <<nbe;
}



Configuration: Windows / Chrome 76.0.3809.132
A voir également:

1 réponse

[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 1 100
Modifié le 29 août 2019 à 12:56
Salut Anat94,

Ce que tu obtiens, c'est le code ASCII du caractère :

http://www.asciitable.com/

puisque les codes ASCII des majuscules augmentent selon l'ordre alphabétique, pour faire correspondre le 'A' à 1, 'B' à 2, etc. il suffit d'effectuer une soustraction du code ASCII du caractère majuscule considéré par le code de 'A' et d'y ajouter 1.


Dal
0
merci de votre reponse cependant je ne comprends pas.
pour avoir A ( ASII = 10) je soustrait 10 a quoi? a 61( code ASII de a)?
Et comment faire pour que ce soit automatique pour toutes les lettres?
merci d'avance !
0
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 1 100
29 août 2019 à 13:06
regarde bien la table ASCII (pas ASII), le code ASCII de 'A' en base décimale est 65 et celui de 'a' est 97.

cependant, tu n'as pas besoin de te soucier de connaître ce numéro.

tu peux faire :
int nbe = toupper(prem[0]) - 'A' + 1;
pour :
  • convertir la première lettre en majuscules, si elle n'est pas déjà en majuscules
  • soustraire au code ASCII de la première lettre en majuscules la valeur ASCII du char 'A'
  • ajouter 1 au résultat, puisque tu veux faire partir tes nombres de 1 et non de 0
0
merci beaucoup mais je suis oblige de faire sa pour les 26 lettre de l'alphabet ??
0
[Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025 1 100
29 août 2019 à 13:46
non, cela fonctionne pour toute lettre majuscule présente dans la table ASCII de A à Z, car, comme je te l'indiquais dès mon premier message, les codes ASCII suivent cet ordre.
0
Anat944 Messages postés 6 Date d'inscription jeudi 8 novembre 2018 Statut Membre Dernière intervention 29 août 2019 > [Dal] Messages postés 6204 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 27 février 2025
29 août 2019 à 14:04
J'ai compris, je ne souhaite pas avoir le copde ASII de la lettre mais son rang dans l'alphabet A=1 B=2 C=3 D=4 etc...
Une idée?
0