[c] nchiffre[c-'0']
Maxg59
Messages postés
275
Date d'inscription
Statut
Membre
Dernière intervention
-
Marden Messages postés 1072 Date d'inscription Statut Membre Dernière intervention -
Marden Messages postés 1072 Date d'inscription Statut Membre Dernière intervention -
Salut a tous !
Allors voila j'apprend le C , j'ai un script que je ne comprend pas enfin plus précisément une petite partie :
voici déja un bout du script :
je ne comprend pas pourquoi : -'0'
il y a 2 cas :
- le -'0' enléve 0 a c (c-0 ex : 3-1 ===> 2) donc il n'y a pas vraiment d'intéret.
-le -'0' enléve le caractére 0 a c ( ex : 10 - 0 ===> 1 ) mais pour moi ce n'est pas vraiment possible vu que c ne peut contenir que 0,1,2,3,4,5,6,7,8,9.
Peut être pour faire
++nchiffre[] ( dans le cas ou c = 0 )
Mais que ce passe t-il si il n'y a pas le numéro de l'entree du tableau???
Désolé si c'est un peu béte mais j'ai perdu mon ceveaux !!!
D'avance Merci !!!
Allors voila j'apprend le C , j'ai un script que je ne comprend pas enfin plus précisément une petite partie :
voici déja un bout du script :
if (c >= '0'' && c <= '9') ++nchiffre[c-'0'];
je ne comprend pas pourquoi : -'0'
il y a 2 cas :
- le -'0' enléve 0 a c (c-0 ex : 3-1 ===> 2) donc il n'y a pas vraiment d'intéret.
-le -'0' enléve le caractére 0 a c ( ex : 10 - 0 ===> 1 ) mais pour moi ce n'est pas vraiment possible vu que c ne peut contenir que 0,1,2,3,4,5,6,7,8,9.
Peut être pour faire
++nchiffre[] ( dans le cas ou c = 0 )
Mais que ce passe t-il si il n'y a pas le numéro de l'entree du tableau???
Désolé si c'est un peu béte mais j'ai perdu mon ceveaux !!!
D'avance Merci !!!
A voir également:
- [c] nchiffre[c-'0']
- Remettre a 0 un pc - Guide
- Numéro de téléphone excel 0 - Guide
- Qualité de signal parabole 0 - Forum TNT / Satellite / Réception
- 0 barré clavier ✓ - Forum Programmation
- Excel différent de 0 ✓ - Forum Excel
5 réponses
Salut,
C'est encore moi :-)
C'est une subtilité de types.
En C, un caractère est en fait stocké dans une variable comme une valeur numerique.
C'est la fameuse norme ascii:
http://www.lookuptables.com/
Ce qui fait que si tu stockes le caractère 'a' dans la variable machin:
Si après tu utilises une fonction comme putchar(), il pourra te traduire le 97 en 'a'.
Ca fonctionnera aussi avec une variable entière, essaie:
Or pour réprésenter un chiffre en tant que caractère, on utilise la même norme. Un chiffre caractère ne fonctionne pas du tout comme un chiffre 'brut'.
Dans une variable, 0 aura la valeur de 0.
Par contre '0' (note les guillemets) aura pour valeur 48.
Voilà voilà :-)
Désolé si c'est un peu béte mais j'ai perdu mon ceveaux !!!
C'est pas bête, en fait les caractères, chaines de caractères, tableaux, pointeurs c'est le plus dur dans les bases du c.
D'autant qu'une guillemet simple n'aura pas du tout la même signification qu'une guillemet double. Et une guillemet simple ou double en c n'a pas la même signification qu'en Php. (D'ailleurs en Php une guillemet simple ou double n'a pas la même signification non plus, bref... :-)
C'est encore moi :-)
C'est une subtilité de types.
En C, un caractère est en fait stocké dans une variable comme une valeur numerique.
C'est la fameuse norme ascii:
http://www.lookuptables.com/
Ce qui fait que si tu stockes le caractère 'a' dans la variable machin:
char machin='a';Et bien machin sera en fait égal à 97. (Voir le tableau ascii).
Si après tu utilises une fonction comme putchar(), il pourra te traduire le 97 en 'a'.
Ca fonctionnera aussi avec une variable entière, essaie:
int truc=97; putchar(truc);Tu aura 'a' affiché à l'écran.
Or pour réprésenter un chiffre en tant que caractère, on utilise la même norme. Un chiffre caractère ne fonctionne pas du tout comme un chiffre 'brut'.
Dans une variable, 0 aura la valeur de 0.
Par contre '0' (note les guillemets) aura pour valeur 48.
Voilà voilà :-)
Désolé si c'est un peu béte mais j'ai perdu mon ceveaux !!!
C'est pas bête, en fait les caractères, chaines de caractères, tableaux, pointeurs c'est le plus dur dans les bases du c.
D'autant qu'une guillemet simple n'aura pas du tout la même signification qu'une guillemet double. Et une guillemet simple ou double en c n'a pas la même signification qu'en Php. (D'ailleurs en Php une guillemet simple ou double n'a pas la même signification non plus, bref... :-)
Super j'ai retrouvé un petit bout !!!!
Merci pour le tableau ascii c'est bien pratique !!!
Mais je ne comprend toujours pas pourquoi on veut enlever '0' a i
???
Merci pour le tableau ascii c'est bien pratique !!!
Mais je ne comprend toujours pas pourquoi on veut enlever '0' a i
???
enfait on veu mettre les 110 entrés de nchiffre à 0 puis ajouter 1 à nchiffre[i] ou i est le nombre en entree:
avant de lire le script c'etait ecrit qu'il etait artificiel, peut être que sa ne sert a rien, c'est juste pour montrerce que l'on peut faire...
sinon je ne voi pas a quoi sa peut servir ???
Max
int c; int nchiffre[10]; for (i = 0; i<10; ++i) nchiffre[i] = 0; ... if (c >= '0' && c <= '9') ++nchiffre[i-'0'];
avant de lire le script c'etait ecrit qu'il etait artificiel, peut être que sa ne sert a rien, c'est juste pour montrerce que l'on peut faire...
sinon je ne voi pas a quoi sa peut servir ???
Max
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Les valeurs Ascii des caractères représentant les chiffres sont des valeurs consécutives. La soustraction de '0' à la valeur Ascii du caractère donne donc un résultat compris entre 0 et 9 (valeurs numériques) servant à adresser le tableau "nchiffre", dont chaque élément est le nombre d'apparitions du caractère correspondant.
Par exemple :
nchiffre[5] contient le nombre d'occurrences du caractère '5'.
Par exemple :
nchiffre[5] contient le nombre d'occurrences du caractère '5'.