Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1361 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C] Compter le nombre de chiffres dans un nombre!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Compter le nombre de chiffres dans un nombre!

n°228132
Koybe
Posté le 15-10-2002 à 13:36:49  profilanswer
 

Alors voilà j'ai essayer comme ca :
 
l=1;
d=10;
while((nombre/d)!=0)
{
    l++;
    d*=10;
}
-> l me donne bien la taille du nombre... sauf si ce dernier commence par un ou plusieurs zeros! Comment faire dans ce cas?
Merci! :)

mood
Publicité
Posté le 15-10-2002 à 13:36:49  profilanswer
 

n°228133
lorill
Posté le 15-10-2002 à 13:38:33  profilanswer
 

:heink:  
t'as beaucoup de nombres qui commencent par un 0, a part dans des chaines de caractères, toi ?

n°228136
Koybe
Posté le 15-10-2002 à 13:42:17  profilanswer
 

eh bien c'est pour la vérification d'un code.... et oui il peut commencer par zero ;)

n°228138
lorill
Posté le 15-10-2002 à 13:44:53  profilanswer
 

Koybe a écrit a écrit :

eh bien c'est pour la vérification d'un code.... et oui il peut commencer par zero ;)




 
Ben pas si tu le stocke dans un entier... Et jusqu'a preuve du contraire, diviser une chaine par 10 en C c'est n'importe quoi.
 
Ton code, il est stocké dans quoi ? parce que si c'est une chaine, y'a qu'a compter le nombre de caractères, non ?

n°228139
Koybe
Posté le 15-10-2002 à 13:47:41  profilanswer
 

Ce n'est pas une chaine il ne contient que des chiffres :
unsigned long int nombre;

n°228140
lorill
Posté le 15-10-2002 à 13:49:19  profilanswer
 

ben alors la les zero devant tu peux oublier gaiement

n°228141
Koybe
Posté le 15-10-2002 à 13:52:03  profilanswer
 

Et il y a pas une autre solution? pour compter le nombre de chiffres?

n°228145
lorill
Posté le 15-10-2002 à 13:54:16  profilanswer
 

Koybe a écrit a écrit :

Et il y a pas une autre solution? pour compter le nombre de chiffres?




a partir du moment ou tu considère le code comme un nombre et que tu le place dans un type numérique, tu perds les zeros devant. La solution consiste a ne pas le prendre comme un nombre, mais je sais pas si ca pose des problemes par rapport au reste de ton programme.

n°228146
smaragdus
whores, drugs & J.S. Bach
Posté le 15-10-2002 à 13:54:25  profilanswer
 

Koybe a écrit a écrit :

Et il y a pas une autre solution? pour compter le nombre de chiffres?




 
int nbreDeChiffre = (int) (1 + log10(nombre)); // tout simplement

n°228158
Koybe
Posté le 15-10-2002 à 14:08:06  profilanswer
 

j'suis d'ac pour le log c plus simple mais ca ne marchera pas non plus si on commence par zero
Pour la chaine de caractere c'est ok mais je vais devoir verifier qu'on entre rien d'autre que des chiffres lol :)

mood
Publicité
Posté le 15-10-2002 à 14:08:06  profilanswer
 

n°228161
BettaSplen​dens
Tout cul tendu mérite son dû
Posté le 15-10-2002 à 14:10:14  profilanswer
 

Smaragdus a écrit a écrit :

 
 
int nbreDeChiffre = (int) (1 + log10(nombre)); // tout simplement



c bien, mais je pense que cette solution peut s'avérer plus gourmande en calcul qu'un simple compteur en faisant des division (éventuellement entière) par 10
 
faut voir si c appelé bcp et si le code a besoin d'etre otpimisé !


---------------
Tout cul tendu mérite son dû
n°228163
Koybe
Posté le 15-10-2002 à 14:13:07  profilanswer
 

non c'est un bete travail a rendre c'est petit ca fait pas grand chose :p

n°228164
smaragdus
whores, drugs & J.S. Bach
Posté le 15-10-2002 à 14:16:26  profilanswer
 

BeTtASpLeNdEnS a écrit a écrit :

c bien, mais je pense que cette solution peut s'avérer plus gourmande en calcul qu'un simple compteur en faisant des division (éventuellement entière) par 10
 
faut voir si c appelé bcp et si le code a besoin d'etre otpimisé !
 




 
entre un appel à la table de log du proco et une boucle avec des divisions et des comparaisons, le choix est vite fait... En plus, le temps de calcul sera toujours le même qqsoit le nombre de chiffres.
 
Sinon, il faut effectivement faire une vérif pour les nombres negatifs ou egal à zéro.


Message édité par smaragdus le 15-10-2002 à 14:50:28
n°228167
BENB
100% Lux.
Posté le 15-10-2002 à 14:21:43  profilanswer
 

Et en prendre le log base 10 ca ne serait pas plus simple ?

n°228182
smaragdus
whores, drugs & J.S. Bach
Posté le 15-10-2002 à 14:49:07  profilanswer
 

BENB a écrit a écrit :

Et en prendre le log base 10 ca ne serait pas plus simple ?




 
 
grillaid :D

n°228185
BENB
100% Lux.
Posté le 15-10-2002 à 14:56:27  profilanswer
 

Smaragdus a écrit a écrit :

 
 
 
grillaid :D




 
desolée... :D
 
J'ai reagit avant que la page soit totalement chargée (ca rame en ce moment  :cry: )
 

n°228205
ashDyson
Si ça saigne, ça peut mourrir.
Posté le 15-10-2002 à 15:25:20  profilanswer
 

saisi ton code dans une chaine...

n°228486
Musaran
Cerveaulté
Posté le 16-10-2002 à 00:54:23  profilanswer
 

Code :
  1. char buf[32];
  2. scanf("%31[0132456789]", &buf);

Il n'y auras que des chiffres de capturés, sans débordement.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C] Compter le nombre de chiffres dans un nombre!

 

Sujets relatifs
[C] afficher un nombre en base 2UNIX Scheme... faire un algo qui dit si un nombre est premier
[C/C++] Générer un nombre premier à 30 chiffres[PHP]limiter le nombre de reponse (forum) par page...
[PHP-MySQL] Compter le nombre d'occurences d'une valeur.[ORACLE] Suppression gd nombre enregistrements
[C++] Nombre d'éléments d'un tableau dynamique ???comment prendre que les x derniers chiffres d'une variable?
Plus de sujets relatifs à : [C] Compter le nombre de chiffres dans un nombre!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR