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

Compter le nombre de chiffres dans un nombre! [C] - C++ - Programmation

Marsh Posté le 15-10-2002 à 13:36:49    

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! :)

Reply

Marsh Posté le 15-10-2002 à 13:36:49   

Reply

Marsh Posté le 15-10-2002 à 13:38:33    

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

Reply

Marsh Posté le 15-10-2002 à 13:42:17    

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

Reply

Marsh Posté le 15-10-2002 à 13:44:53    

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 ?

Reply

Marsh Posté le 15-10-2002 à 13:47:41    

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

Reply

Marsh Posté le 15-10-2002 à 13:49:19    

ben alors la les zero devant tu peux oublier gaiement

Reply

Marsh Posté le 15-10-2002 à 13:52:03    

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

Reply

Marsh Posté le 15-10-2002 à 13:54:16    

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.

Reply

Marsh Posté le 15-10-2002 à 13:54:25    

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

Reply

Marsh Posté le 15-10-2002 à 14:08:06    

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 :)

Reply

Marsh Posté le 15-10-2002 à 14:08:06   

Reply

Marsh Posté le 15-10-2002 à 14:10:14    

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û
Reply

Marsh Posté le 15-10-2002 à 14:13:07    

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

Reply

Marsh Posté le 15-10-2002 à 14:16:26    

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
Reply

Marsh Posté le 15-10-2002 à 14:21:43    

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

Reply

Marsh Posté le 15-10-2002 à 14:49:07    

BENB a écrit a écrit :

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




 
 
grillaid :D

Reply

Marsh Posté le 15-10-2002 à 14:56:27    

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: )
 

Reply

Marsh Posté le 15-10-2002 à 15:25:20    

saisi ton code dans une chaine...

Reply

Marsh Posté le 16-10-2002 à 00:54:23    

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
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed