IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

nombre de chiffres d'un nombre


Sujet :

Algorithmes et structures de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut nombre de chiffres d'un nombre
    Bonjour,

    existe t-il un moyen de connaitre le nombre de chiffres d'un nombre donné (algorithmiquement) sans employer une structure itérative?
    merci

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 501
    Par défaut
    Bonjour,

    Sans être le plus compétent pour répondre, je dirais que sur le plan purement mathématique, le logarithme à base n (généralement 10, donc) arrondi par excès correspond à peu près à ce que tu cherches.

    Pour le calculer, en revanche, je pense que tu es obligé(e) de passer par un algorithme itératif.

  3. #3
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Pour un nombre x en base 10, il suffit de faire floor(log_10(x)) + 1

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 501
    Par défaut
    Citation Envoyé par Alexis.M Voir le message
    Pour un nombre x en base 10, il suffit de faire floor(log_10(x)) + 1
    C'est ce qu'on vient de dire.

  5. #5
    Membre émérite
    Homme Profil pro
    Ingénieur R&D en apprentissage statistique
    Inscrit en
    Juin 2009
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur R&D en apprentissage statistique

    Informations forums :
    Inscription : Juin 2009
    Messages : 447
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Le logarithme à base n (généralement 10, donc) arrondi par excès correspond à peu près à ce que tu cherches.
    Ca correspond plutôt à ceil(log_10(x)), ce qui ne donne pas le bon résultat pour les puissances de 10 exactes.

  6. #6
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut
    merci pour vos réponses
    je dirai donc que je prends la partie entiére de log(n) et je luis rajoute un 1
    mais algorithmiquement comment je précise que je prends la partie entiére d'un réel?
    ou bien je définis ma variable en type entier et par conséquent cela sous-entends la partie entière du log(n)?

  7. #7
    Membre Expert
    Avatar de kwariz
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2011
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2011
    Messages : 898
    Par défaut
    Bonjour,

    «algorithmiquement» tu fais ce que tu veux Il faut juste que ce que tu utilises soit défini. Par exemple on trouve souvent dans la littérature :
    ⌈x⌉ partie entière par excès
    ⌊x⌋ partie entière par défaut (En France on trouve souvent la notation E(x))

    Pour les notations des log on retrouve souvent (quand il s'agit de les différencier)
    log = logarithme en base 10
    ln = logarithme naturel, base e
    lg = logarithme binaire, base 2

    Ton algo pourrait bien s'écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    nbre chiffre( n: entier ) : entier
      renvoyer E(log10(n))+1
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function decimal_digit_count
    in : integer x
    out : integer 
    begin
      if x = 0 then
        decimal_digit_count := 1
      else
        decimal_digit_count := 1 + ⌊log x⌋
      end if
    end
    Ce n'est qu'une question de convention, de style aussi. Par exemple dans le premier algo je suppose qu'on assume que le paramètre ne sera jamais 0 et que pour les deux algos on assume que l'entier est toujours positif ....

    Ensuite pour l'implémentation, en C il faudra utiliser log10, floor, transformer en int ... alors que dans un autre langage il faudra faire d'autres manipulations (peut-être y aura-t-il même une fonction prédéfinie ... qui sait ?)

  8. #8
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut
    merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compter le nombre de chiffres d'un nombre
    Par mbatchou dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 01/05/2015, 12h17
  2. [C#] Limiter le nombre de chiffre apres la virgule ?
    Par MaxiMax dans le forum ASP.NET
    Réponses: 3
    Dernier message: 01/08/2011, 14h20
  3. Nombres de nombres premiers avec un certain nombre de chiffres
    Par piotrr dans le forum Mathématiques
    Réponses: 3
    Dernier message: 25/02/2008, 18h03
  4. arrondir un nombre à 2 chiffres après la virgule
    Par El Saigneur dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 01/02/2005, 08h36
  5. [MFC] Nombre de chiffres après la virgule
    Par karl3i dans le forum MFC
    Réponses: 3
    Dernier message: 27/01/2004, 13h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo