Conversion des majuscules en minuscules
Discutez d'informatique ici !
-
MacErmite
- Membre Relatif
- Messages: 408
- Enregistré le: 12 Mai 2006, 12:00
-
par MacErmite » 28 Nov 2010, 10:50
Bonjour,
Pouvez-vous m'aider à comprendre comment fonctionne ces quelques lignes de langage C :
- Code: Tout sélectionner
char c ; //definition de la variable
/*saisie du caractere a analyser*/
printf("Entrer une lettre : ");
scanf("%c", &c);
/*transformation des majuscules en minuscules*/
if (c>='A' && c='A' && c<='Z'){
c+='a'-'A';}
Merci
-
Doraki
- Habitué(e)
- Messages: 5021
- Enregistré le: 20 Aoû 2008, 11:07
-
par Doraki » 28 Nov 2010, 12:08
les caractères c'est aussi des entiers.
Et il se trouve que les lettres sont rangées dans l'ordre alphabétique :
'b' = 'a'+1, 'c' = 'a'+2, ..., 'z' = 'a'+25
'B' = 'A'+1, ...., 'Z' = 'A'+25.
Donc si ton caractère c'est une lettre majuscule, 'A'+k avec 0<=k<=25,
bah ('A'+k)+('a'-'A') = 'a'+('A'-'A')+k = 'a'+k
-
MacErmite
- Membre Relatif
- Messages: 408
- Enregistré le: 12 Mai 2006, 12:00
-
par MacErmite » 28 Nov 2010, 12:59
Donc 'a' occupe une position 0 et 'z' la position 25 ? je ne vois pas ce que représente 'a'-'A' ?
-
Doraki
- Habitué(e)
- Messages: 5021
- Enregistré le: 20 Aoû 2008, 11:07
-
par Doraki » 28 Nov 2010, 13:30
non 'a' c'est genre 97 et 'A' c'est 65.
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 28 Nov 2010, 13:59
salut,
pour compléter Doraki, en fait, le char c'est un octet.
Quand tu déclare char lettre='a'
ton 'a' est encodé sous la forme d'un octet (au pif : 0101 1111)
De fait, lorsque tu écris 'a'+'b', tu vas réaliser 0101 1111+la représentation binaire de 'b'
quant à 'a'-'A', tu déduis, que c'est l'écart entre la valeur de 'a' et celle de 'A'.
Typiquement, si 'a' est encodée en binaire, tel que 'a' vaut 97 en décimal, et 'A' 65 en décimal, ben...
'a'-'A' correspond à réaliser l'opération 97-65
la vie est une fête

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités