Nombre de chiffre d'un nombre

tomalille Messages postés 52 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 juin 2007 - 12 sept. 2005 à 21:55
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 13 sept. 2005 à 12:13
Bonjour,
je cherche en C comment connaître le nombre de chiffres utilisés pour représenter un nombre. ex: 2345 -> 4, 546->3.
Merci d'avance

12 réponses

MoDDiB Messages postés 546 Date d'inscription mardi 26 novembre 2002 Statut Membre Dernière intervention 4 mai 2007 1
12 sept. 2005 à 22:25
Tu le passes dans une chaine et tu calcules la longueur de la chaine ou
alors tu te fais ta fonction propre en divisant par 10 , 100 , 1000
etc...
0
tomalille Messages postés 52 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 5 juin 2007
12 sept. 2005 à 22:29
ok mais comment on fait pour le passer dans un chaine?
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
12 sept. 2005 à 22:37
int NbrChiffre( int Nbr )

{

char Buff[MAX_PATH];

itoa(Nbr, Buff, 10);



if(!Buff)

return -1;



return strlen(Buff);

}
if(!Meilleur("Joky")) return ERREUR;
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 22:41
if(!Buff)
c'est quoi ce truc ???

ciao...
BruNews, MVP VC++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
12 sept. 2005 à 22:44
Beurk c'est vrai ça qu'elle horreur lol :)

if(!Meilleur("Joky")) return ERREUR;<
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
12 sept. 2005 à 22:53
char buff[16]; // suffira largement pour un entier 32 bits

ciao...
BruNews, MVP VC++
0
cs_AlexMAN Messages postés 1536 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 24 mai 2009 1
12 sept. 2005 à 23:20
Brunews avait un jour donné une fonction, certes pas tres belle, mais qui (logiquement) est bien + efficace :

J'en donne une partie :

int LenNbr(int i)
{
if (i >= 1000000000) return 10;
if (i >= 100000000) return 9;
...etc
}

+2(p - n)
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 sept. 2005 à 11:48
Sinon comme le disait MoDDiB fait toi une fonction qui divise le nombre comme ceçi:

int val=123;//ta valeur

int tmp=val;

int compteur=0;

do

{

tmp=tmp/10;

compteur++;

while(tmp>=1);

//tant que tmp n'aurat pas atein 0.123 on reste dans la boucle

//et ici réperère la valeur de compteur
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 sept. 2005 à 11:50
attention j'ai oublié le } de la boucle sorry!!
0
tibob51 Messages postés 268 Date d'inscription vendredi 30 avril 2004 Statut Membre Dernière intervention 13 mai 2013 2
13 sept. 2005 à 11:56
Oula je suis pas réveiller aujourd'hui moi!
Je réécrit le code (en clair et sans fautes):

int val=123;//ta valeur
float tmp=val;
int compteur=0;

do
{
tmp=tmp/10;
compteur++;
}
while(tmp>=1);//On retse dans la boucle tant que tmp est sup a 1

//Récupère la valeur de compteur
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
13 sept. 2005 à 12:03
Et ceux après la virgule Mr :) ?

Enfin dans le cas ou il y a des décimales :)
if(!Meilleur("Joky")) return ERREUR;<
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
13 sept. 2005 à 12:13
log10(n) + 1

ciao...
BruNews, MVP VC++
0
Rejoignez-nous