Strlen() pour obtenir la longueur d'un nombre?

scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007 - 8 janv. 2005 à 15:21
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 - 10 janv. 2005 à 15:58
est-ce qu'on peut utiliser strlen() pour obtenir la longueur (ou le nombre de chiffres d'un nombre) d'un nombre ?
A voir également:

12 réponses

bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
8 janv. 2005 à 15:44
ben oui si ton nombre est contenu dans une chaine de caractères. genre:
const char* nbr = "123456789";
strlen(nbr) retournera le nombre de chiffres (9 ici)
0
xboxut Messages postés 172 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 27 novembre 2009 1
8 janv. 2005 à 15:50
tu peux faire un truc du genre :
float test=10.25468f;
char buffer[30];

buffer=ftoa(test);
strlen(buffer);


c degueu mais ca marche ;)
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
8 janv. 2005 à 19:37
int GetLength(int num) {

char* depot[500];
ZeroMemory(depot, sizeof(depot));

wsprintf(depot, "%d", num);
return lstrlen(depot);
}

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
0
Galmiza Messages postés 573 Date d'inscription samedi 16 novembre 2002 Statut Membre Dernière intervention 9 avril 2008 1
8 janv. 2005 à 19:41
int GetNumberCaracters(int n)

{

int j=1;

int count=0;

while (n/j) { j*=10; count++;}

if (count ==0) return 1;

return count;

}
0

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

Posez votre question
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
8 janv. 2005 à 20:17
merci pour vos réponses.
Galmiza, ton système de boucle avec compteur est intéressant.

En fait, mon problème vient du fait que j'utilise la librairie NTL de Victor Shoup (www.shoup.net/ntl
) et des nombres de classes ZZ (classe permettant la gestion des très grands nombres (composés de plusieurs millions de chiffres, par exemple).
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
9 janv. 2005 à 12:33
ça sert à quoi de manipler des nombres ac des millions de chiffres ? quelle utilisation pratique

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
0
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
9 janv. 2005 à 13:58
ça sert à faire de la cryptographie (systèmes à clefs publiques genre RSA) et de la recherche pure en mathématiques.
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
9 janv. 2005 à 14:37
scelw> Merci de l'info :-)

Gendal67, Dev-C++ 4.9.9.1, J'adore cppfrance!! :-))
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
10 janv. 2005 à 13:51
Salut,

le log en base 10 permet de connaitre le nombre de chiffre d'un nombre




#include 

#include <cmath>

using namespace std;



int main()

{

    for( double i = 1; i < 100000; ++i )

        cout << i << ":" << log10( i ) << endl;

}



Ma participation à la saturation du net:
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
10 janv. 2005 à 13:54
c'est log10(i)+1

pour avoir le nombre de chiffre du nombre.


Ma participation à la saturation du net:
0
scelw Messages postés 117 Date d'inscription mercredi 3 septembre 2003 Statut Membre Dernière intervention 17 février 2007
10 janv. 2005 à 15:39
cette méthode est intéressante mais hélas, dans le cas de très grands nombres
(plusieurs millions de chiffres), elle est trop lente : c'est une boucle qui fait un
calcul à chaque tour, soit des millions de calculs avant d'arriver au résultat...
c'est très très lent... :(
j'aurais voulu savoir, en conséquence, si une méthode alternative et plus rapide
pouvait être appliquée : par exemple, récupérer la taille du buffer qui stocke le nombre et en déduire sa longueur donc son nombre de chiffres... voyez-vous ce que je veux
dire?
0
Hylvenir Messages postés 364 Date d'inscription mercredi 11 février 2004 Statut Membre Dernière intervention 5 octobre 2006 2
10 janv. 2005 à 15:58
La boucle n'est là que pour afficher les tests.



une fonction



// entrée : l'entier

// sortie : le nombre de chiffre de l'entier

int GetLength(int num) { return log10(num)+1; }




après la méthode peut être différente selon la librairie que tu utilises

que je ne connais pas.

mais il pourrait proposer un log en base 10 sur les grands nombres,

et peut être même directement l'information que tu souhaites.




Ma participation à la saturation du net:
0
Rejoignez-nous