Nombre de chiffre d'un nombre

Signaler
Messages postés
52
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
5 juin 2007
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

Messages postés
546
Date d'inscription
mardi 26 novembre 2002
Statut
Membre
Dernière intervention
4 mai 2007
1
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...
Messages postés
52
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
5 juin 2007

ok mais comment on fait pour le passer dans un chaine?
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
int NbrChiffre( int Nbr )

{

char Buff[MAX_PATH];

itoa(Nbr, Buff, 10);



if(!Buff)

return -1;



return strlen(Buff);

}
if(!Meilleur("Joky")) return ERREUR;
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
if(!Buff)
c'est quoi ce truc ???

ciao...
BruNews, MVP VC++
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Beurk c'est vrai ça qu'elle horreur lol :)

if(!Meilleur("Joky")) return ERREUR;<
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
char buff[16]; // suffira largement pour un entier 32 bits

ciao...
BruNews, MVP VC++
Messages postés
1536
Date d'inscription
samedi 21 décembre 2002
Statut
Membre
Dernière intervention
24 mai 2009
2
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)
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
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
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
attention j'ai oublié le } de la boucle sorry!!
Messages postés
268
Date d'inscription
vendredi 30 avril 2004
Statut
Membre
Dernière intervention
13 mai 2013
2
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
Messages postés
1787
Date d'inscription
lundi 22 novembre 2004
Statut
Membre
Dernière intervention
31 janvier 2009
2
Et ceux après la virgule Mr :) ?

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

ciao...
BruNews, MVP VC++